:root{color-scheme:light;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "Segoe UI", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-mono: "SFMono-Regular", ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bg: #f7f3ee;--surface: #fbf7f2;--surface-strong: #f1e7dc;--border: #dacdbf;--text: #241b16;--text-muted: #6e5f54;--accent: #8d5428;--accent-strong: #6f421f;--page-wash: rgba(255, 255, 255, .32);--max-width: 1120px;--ui-ease-out: cubic-bezier(.16, 1, .3, 1);--ui-hover-duration: .68s;--ui-slide-duration: .82s;--ui-hover-border: color-mix(in srgb, var(--accent) 36%, var(--border));--ui-hover-background: color-mix( in srgb, var(--surface-strong) 36%, var(--surface) );--ui-hover-text: color-mix(in srgb, var(--accent-strong) 88%, var(--text));--ui-hover-shadow: 0 6px 14px rgba(16, 12, 8, .08);--ui-button-hover-scale: 1.035;--ui-button-hover-lift: -1px;--theme-transition-duration: .32s;--language-transition-duration: .52s;--theme-transition-x: 50vw;--theme-transition-y: 0px;--theme-transition-radius: 0px;--kana-hover: #bb5a1d;--kana-hover-glow: rgba(187, 90, 29, .22)}:root[data-theme=dark]{color-scheme:dark;--bg: #151210;--surface: #1f1a17;--surface-strong: #2b241f;--border: #40362e;--text: #f3ede7;--text-muted: #b7a99b;--accent: #d09663;--accent-strong: #e3b182;--page-wash: rgba(255, 255, 255, .03);--ui-hover-shadow: 0 6px 14px rgba(0, 0, 0, .1);--kana-hover: #ffc98a;--kana-hover-glow: rgba(255, 201, 138, .28)}*{box-sizing:border-box}html{min-height:100%;background:var(--bg);scroll-behavior:smooth;scroll-padding-top:5.75rem}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:linear-gradient(to bottom,var(--page-wash),transparent 320px),var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.5;transition:background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out)}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}#root{width:100%;min-height:100%}.app-shell{width:min(calc(100% - 2rem),var(--max-width));min-height:100vh;min-height:100dvh;margin:0 auto;padding:5.75rem 0 3rem;display:flex;flex-direction:column}.page-header{display:grid;gap:1rem;padding:1rem 0 2rem;border-bottom:1px solid var(--border)}.header-main{display:grid;gap:.65rem}.header-title-lockup{display:grid;gap:.25rem}.header-role{margin:0;color:var(--text-muted);font-size:.95rem}.header-role-primary,.header-role-secondary,.header-role-separator,.header-role-secondary-main,.header-role-secondary-note{display:inline}.header-role-secondary-note{margin-left:.2rem;font-size:.84em}.header-location{display:inline-flex;align-items:center;gap:.45rem;width:fit-content;margin:-.15rem 0 0;color:var(--text-muted);font-size:.92rem}.header-location svg{width:.95rem;height:.95rem;flex:0 0 auto}.page-header h1{margin:0;font-size:clamp(2.25rem,5vw,3.6rem);line-height:1;letter-spacing:-.03em}.header-intro{max-width:44rem;margin:0;color:var(--text-muted);font-size:1rem}.header-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;padding-top:.35rem}.header-action-link,.header-icon-link{display:inline-flex;align-items:center;gap:.55rem;min-height:2.65rem;border:1px solid var(--border);border-radius:.625rem;background:var(--surface);color:var(--text);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out),transform var(--ui-hover-duration) var(--ui-ease-out)}.header-action-link{padding:.6rem .9rem}.header-icon-link{justify-content:center;width:2.65rem;padding:0}.header-action-link span{line-height:1;white-space:nowrap}.header-action-link svg,.header-icon-link svg{width:1rem;height:1rem;flex:0 0 auto}.header-action-link:hover,.header-icon-link:hover{border-color:var(--ui-hover-border);background:var(--ui-hover-background);color:var(--ui-hover-text);box-shadow:var(--ui-hover-shadow)}.header-action-link:focus-visible,.header-icon-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.header-meta{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start;justify-content:space-between;padding:.25rem 0}.control-group{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.control-label{color:var(--text-muted);font-size:.9rem}.control-button{border:1px solid var(--border);border-radius:.625rem;background:var(--surface);color:var(--text);padding:.6rem .85rem;transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out),transform var(--ui-hover-duration) var(--ui-ease-out)}.control-button-language{display:inline-flex;align-items:center;justify-content:center}.control-button-language-full{display:block;line-height:1;white-space:nowrap}.control-button-language-compact{display:none;line-height:1}.page-header,.section-card,.page-footer,.tech-item,.project-card,.timeline-entry{transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.header-role,.header-location,.header-intro,.control-label,.page-nav a,.blog-heading p,.blog-article-meta,.blog-article-control,.section-heading p,.tech-name,.project-card p,.timeline-entry p,.blog-article-body p,.blog-article-summary p,.about-support p,.chip-list li,.project-heading span,.timeline-side span,.page-footer p,.footer-title-kana{transition:color var(--ui-hover-duration) var(--ui-ease-out)}.control-button:hover{border-color:var(--ui-hover-border);background:var(--ui-hover-background);color:var(--ui-hover-text);box-shadow:var(--ui-hover-shadow)}.control-button.is-active{background:var(--surface-strong);border-color:var(--accent);color:var(--accent-strong)}.control-button-icon{display:inline-flex;align-items:center;justify-content:center;width:2.65rem;height:2.65rem;padding:0}.control-button-icon svg{width:1.15rem;height:1.15rem}@media (prefers-reduced-motion: no-preference){:root.theme-transition::view-transition-old(root),:root.theme-transition::view-transition-new(root){animation-duration:var(--theme-transition-duration);animation-timing-function:var(--ui-ease-out);mix-blend-mode:normal}:root.theme-transition::view-transition-old(root){animation-name:theme-fade-out}:root.theme-transition::view-transition-new(root){animation-name:theme-reveal-in}}:root.language-transition .header-main,:root.language-transition .content-grid,:root.language-transition .blog-view,:root.language-transition .page-footer,:root.language-transition .page-nav-links,:root.language-transition .page-nav-tools,:root.language-transition .mobile-nav{animation:language-refresh var(--language-transition-duration) var(--ui-ease-out)}@keyframes language-refresh{0%{opacity:0;filter:blur(5px);transform:translateY(.45rem)}to{opacity:1;filter:blur(0);transform:translateY(0)}}@keyframes theme-fade-out{0%{opacity:1}to{opacity:0}}@keyframes theme-reveal-in{0%{clip-path:circle(0 at var(--theme-transition-x) var(--theme-transition-y))}to{clip-path:circle(var(--theme-transition-radius) at var(--theme-transition-x) var(--theme-transition-y))}}@keyframes view-stage-wash-in{0%{opacity:0}to{opacity:1}}@keyframes view-stage-wash-out{0%{opacity:1}to{opacity:0}}@keyframes view-panel-out{0%{opacity:1;filter:blur(0);transform:translateY(0)}to{opacity:0;filter:blur(6px);transform:translateY(.5rem)}}@keyframes view-panel-in{0%{opacity:0;filter:blur(8px);transform:translateY(.85rem)}to{opacity:1;filter:blur(0);transform:translateY(0)}}.page-nav{position:fixed;top:.75rem;left:50%;z-index:40;transform:translate(-50%);display:flex;align-items:center;justify-content:space-between;gap:1.1rem;width:min(calc(100% - 2rem),var(--max-width));padding:.85rem 1rem;border:1px solid color-mix(in srgb,var(--border) 78%,white 22%);border-radius:.875rem;background:linear-gradient(180deg,color-mix(in srgb,white 14%,transparent),transparent 58%),color-mix(in srgb,var(--surface) 74%,transparent);box-shadow:0 10px 28px #100c0814,inset 0 1px color-mix(in srgb,white 36%,transparent);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%)}.page-nav-links,.page-nav-tools{display:flex;align-items:center}.page-nav-links{flex:1 1 auto;flex-wrap:wrap;gap:1rem 1.2rem;min-width:0}.page-nav-tools{flex:0 0 auto;gap:.55rem;margin-left:auto}.page-nav-tool{display:inline-flex;align-items:center}.page-nav a{color:var(--text-muted);font-size:.95rem;text-shadow:0 1px 0 color-mix(in srgb,var(--surface) 65%,transparent);transition:color var(--ui-hover-duration) var(--ui-ease-out)}.page-nav-tools .control-button{min-height:2.45rem;padding:.55rem .82rem;border-color:color-mix(in srgb,var(--border) 84%,white 16%);background:color-mix(in srgb,var(--surface) 88%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 20%,transparent)}.page-nav-tools .control-button-language{width:2.45rem;min-width:2.45rem;height:2.45rem;padding:0}.page-nav-tools .control-button-language-full{display:none}.page-nav-tools .control-button-language-compact{display:block;font-size:.76rem;font-weight:600;letter-spacing:.08em}.page-nav-tools .control-button-icon{width:2.45rem;height:2.45rem;padding:0}.page-nav a:hover{color:var(--ui-hover-text)}.page-nav a.is-active{color:var(--text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.4rem}:root[data-theme=dark] .page-nav{border-color:color-mix(in srgb,var(--border) 88%,white 12%);background:linear-gradient(180deg,color-mix(in srgb,white 5%,transparent),transparent 56%),color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:0 10px 26px #0000003d,inset 0 1px color-mix(in srgb,white 12%,transparent);backdrop-filter:blur(16px) saturate(125%);-webkit-backdrop-filter:blur(16px) saturate(125%)}:root[data-theme=dark] .page-nav a{text-shadow:none}:root[data-theme=dark] .page-nav-tools .control-button{border-color:color-mix(in srgb,var(--border) 90%,white 10%);background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent)}.mobile-nav,.mobile-theme-toggle,.mobile-menu-toggle,.mobile-menu-backdrop{display:none}.view-stage{position:relative;flex:1 1 auto;display:flex;flex-direction:column;min-height:30rem}.view-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:0;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 48%,transparent),color-mix(in srgb,var(--bg) 82%,transparent) 58%,var(--bg))}.view-panel{position:relative;z-index:1}.view-stage>main{flex:1 0 auto}.view-phase-exit:before{animation:view-stage-wash-in .22s var(--ui-ease-out) forwards}.view-phase-enter:before{animation:view-stage-wash-out .36s var(--ui-ease-out) forwards}.view-phase-exit .view-panel{animation:view-panel-out .22s var(--ui-ease-out) forwards}.view-phase-enter .view-panel{animation:view-panel-in .34s var(--ui-ease-out) forwards}.section-card{scroll-margin-top:6.5rem}.content-grid{display:grid;gap:3rem;padding-top:2.5rem}.blog-view{padding-top:2.5rem}.section-card{padding-top:1.9rem;border-top:1px solid var(--border)}.section-heading{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.25rem}.section-heading h2,.project-card h3,.timeline-entry h3{margin:0;font-size:1.15rem}.section-heading p,.project-card p,.timeline-entry p{margin:.35rem 0 0;color:var(--text-muted);max-width:44rem}.about-section{display:grid;gap:1.5rem}.about-intro{display:grid;gap:1.75rem;align-items:center}.about-intro-split,.about-intro-compact{grid-template-columns:8.5rem minmax(0,1fr)}.about-primary{display:flex;justify-content:center;align-self:center}.about-copy{display:grid;gap:.9rem;max-width:42rem}.about-lead,.about-copy p{margin:0}.about-portrait{display:block;width:8.5rem;max-width:100%;height:auto;aspect-ratio:3 / 4;border:1px solid var(--border);border-radius:.75rem;background:var(--surface);object-fit:cover;object-position:center 20%;transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.about-lead{font-size:1.1rem;line-height:1.7}.about-copy p:not(.about-lead){color:var(--text-muted);line-height:1.72}.tech-list,.project-list{display:grid;gap:1rem}.tech-list{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));padding:0;margin:0;list-style:none}.tech-item,.project-card{display:grid;gap:.85rem;padding:1rem;border:1px solid var(--border);border-radius:.75rem;background:var(--surface)}.tech-item{grid-template-columns:2.5rem minmax(0,1fr);align-items:center;transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.chip-list{display:flex;flex-wrap:wrap;gap:.35rem;padding:0;margin:0;list-style:none}.chip-list li{color:var(--text-muted);font-size:.92rem}.chip-list li:not(:last-child):after{content:"·";margin-left:.35rem}.tech-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:1px solid var(--border);border-radius:.7rem;background:var(--surface-strong);color:var(--accent-strong);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.tech-icon svg{width:1.2rem;height:1.2rem;display:block}.tech-name{color:var(--text);line-height:1.35;transition:color var(--ui-hover-duration) var(--ui-ease-out)}.tech-item:hover,.tech-item:focus-within{border-color:var(--ui-hover-border);background:var(--ui-hover-background);box-shadow:var(--ui-hover-shadow)}.tech-item:hover .tech-icon,.tech-item:focus-within .tech-icon{border-color:var(--ui-hover-border);background:var(--surface);color:var(--ui-hover-text);box-shadow:var(--ui-hover-shadow);animation:tech-icon-pulse .24s var(--ui-ease-out)}.tech-item:hover .tech-name,.tech-item:focus-within .tech-name{color:var(--ui-hover-text)}@keyframes tech-icon-pulse{0%{opacity:.72}55%{opacity:1}78%{opacity:.86}to{opacity:1}}.project-heading{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:flex-start}.project-heading-meta{display:inline-flex;align-items:center;gap:.55rem}.project-repo-link{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.15rem;border:1px solid var(--border);border-radius:.625rem;background:var(--surface);color:var(--text);padding:.45rem .7rem;transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),opacity var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out),transform var(--ui-hover-duration) var(--ui-ease-out)}.project-repo-link svg{width:.95rem;height:.95rem}.project-repo-link span{font-size:.85rem;line-height:1}.project-repo-link:hover{border-color:var(--ui-hover-border);color:var(--ui-hover-text);background:var(--ui-hover-background);box-shadow:var(--ui-hover-shadow)}.project-repo-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-carousel{--project-carousel-gap: 1rem;display:grid;gap:1rem}.project-carousel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem}.project-carousel-status{display:inline-flex;gap:.35rem;margin:0;color:var(--text-muted);font-family:var(--font-mono);font-size:.88rem}.project-carousel-controls{display:flex;gap:.55rem}.project-carousel-button{display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;border:1px solid var(--border);border-radius:.625rem;background:var(--surface);color:var(--text);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),opacity var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out),transform var(--ui-hover-duration) var(--ui-ease-out)}.project-carousel-button svg{width:1rem;height:1rem}.project-carousel-button:hover:not(:disabled){border-color:var(--ui-hover-border);background:var(--ui-hover-background);color:var(--ui-hover-text);box-shadow:var(--ui-hover-shadow)}.project-carousel-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-carousel-button:disabled{opacity:.42;cursor:default}@media (hover: hover) and (pointer: fine){.header-action-link:hover,.header-icon-link:hover,.control-button:hover,.project-repo-link:hover,.project-carousel-button:hover:not(:disabled){transform:translateY(var(--ui-button-hover-lift)) scale(var(--ui-button-hover-scale))}}.project-carousel-viewport{overflow:hidden}.project-carousel-track{--project-visible-count: 3;--project-active-index: 0;--project-card-width: calc( ( 100% - ((var(--project-visible-count) - 1) * var(--project-carousel-gap)) ) / var(--project-visible-count) );display:flex;gap:var(--project-carousel-gap);transform:translate(calc((var(--project-card-width) + var(--project-carousel-gap)) * var(--project-active-index) * -1));transition:transform var(--ui-slide-duration) var(--ui-ease-out)}.project-carousel-card{flex:0 0 var(--project-card-width);min-width:0;max-width:var(--project-card-width);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),opacity var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.project-carousel-card:hover{border-color:var(--ui-hover-border);background:var(--ui-hover-background);box-shadow:var(--ui-hover-shadow)}.project-carousel-card .project-repo-link{border-color:var(--ui-hover-border);color:var(--text)}.project-heading span,.timeline-side span{color:var(--text-muted);font-size:.9rem}.timeline{display:grid;gap:1rem}.timeline-entry{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1rem;padding:1.1rem 0;border-top:1px solid var(--border)}.timeline-entry:first-child{padding-top:0;border-top:0}.timeline-main p,.timeline-side p{max-width:34rem}.blog-shell{display:grid;gap:1rem}.blog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.blog-heading{display:grid;gap:.35rem;max-width:44rem}.blog-heading h2{margin:0;font-size:1.35rem}.blog-heading p{margin:0;color:var(--text-muted);line-height:1.7}.blog-list{display:grid;gap:1rem}.blog-article{overflow:clip;border:1px solid var(--border);border-radius:.875rem;background:var(--surface);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.blog-article:hover,.blog-article:focus-within{border-color:var(--ui-hover-border);background:var(--ui-hover-background);box-shadow:var(--ui-hover-shadow)}.blog-article.is-open{border-color:color-mix(in srgb,var(--accent) 34%,var(--border));box-shadow:var(--ui-hover-shadow)}.blog-article-toggle{display:flex!important;flex-direction:column-reverse!important;width:100%;display:grid;gap:1rem;padding:1rem 1.1rem;border:0;background:transparent;color:inherit;text-align:left}.blog-article-header{display:flex;flex-direction:column}.blog-article-meta{display:flex;flex-wrap:wrap;gap:.4rem 1rem;color:var(--text-muted);font-size:.88rem}.blog-article-control{margin-top:5px;justify-content:space-between;display:inline-flex;align-items:center;gap:.65rem;color:var(--text-muted);font-size:.9rem;white-space:nowrap}.blog-article-control-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--border);border-radius:.625rem;background:var(--surface-strong);color:var(--text);transition:transform var(--ui-hover-duration) var(--ui-ease-out),border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out)}.blog-article-control-icon svg{width:.95rem;height:.95rem}.blog-article-control-icon.is-open{transform:rotate(180deg);border-color:color-mix(in srgb,var(--accent) 34%,var(--border));background:var(--surface);color:var(--accent-strong)}.blog-article-summary{display:grid;gap:.4rem}.blog-article-summary h3{margin:0;font-size:1.12rem;line-height:1.35}.blog-article-summary p{max-width:46rem}.blog-article-tags-row{padding:0 1.1rem 1rem}.blog-article-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--ui-slide-duration) var(--ui-ease-out)}.blog-article-content.is-open{grid-template-rows:1fr}.blog-article-content-inner{min-height:0;overflow:hidden}.blog-article-reading-area{display:grid;gap:.95rem;padding:0 1.1rem 1.1rem;border-top:1px solid transparent;opacity:0;transform:translateY(-.4rem);transition:border-color .22s var(--ui-ease-out),opacity .22s var(--ui-ease-out),transform .22s var(--ui-ease-out)}.blog-article-content.is-open .blog-article-reading-area{border-top-color:var(--border);opacity:1;transform:translateY(0);transition-delay:90ms}.blog-article-tags{margin:0}.blog-article-body{display:grid;gap:.95rem;margin-top:.85rem;max-width:48rem}.blog-article-body p{margin:0;color:var(--text-muted);line-height:1.8}.page-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.75rem 0 .5rem;margin-top:2rem;border-top:1px solid var(--border)}.page-footer p{margin:0;color:var(--text-muted);font-size:.95rem}.footer-title-kana{display:inline-block;color:var(--text-muted);font-size:.8rem;line-height:1;letter-spacing:.18em;text-align:right;white-space:nowrap}@media (max-width: 1100px){.header-actions{align-items:stretch;justify-content:start}.header-action-link{justify-content:center;min-width:0;text-align:center}}@media (max-width: 900px){.timeline-entry{grid-template-columns:1fr}.tech-list{grid-template-columns:repeat(2,minmax(0,1fr))}.about-intro-split,.about-intro-compact{grid-template-columns:minmax(0,1fr) 7rem;gap:1.15rem;align-items:start}.about-copy{order:1}.about-primary{order:2;justify-content:flex-start}.about-portrait{width:7rem}.header-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.header-action-link{justify-content:center;min-width:0;text-align:center}.header-meta{gap:.85rem}.control-group{justify-content:space-between;width:100%}.timeline-entry{gap:.75rem}.timeline-side{display:grid;gap:.35rem}}@media (max-width: 660px){html{scroll-padding-top:1.35rem;scroll-padding-bottom:1.35rem}.app-shell{width:min(calc(100% - 2rem),var(--max-width));padding-top:1.4rem;padding-bottom:3rem}.page-header{gap:1.15rem;padding-bottom:1.7rem}.header-main{gap:.75rem}.header-title-lockup{gap:.35rem}.page-header h1{font-size:clamp(2.1rem,11vw,3rem)}.header-role{max-width:34rem;font-size:.92rem;line-height:1.55}.header-role-separator{display:none}.header-role-secondary{display:block;margin-top:.08rem}.header-role-secondary-note{font-size:.8em}.header-location{font-size:.9rem}.header-actions{gap:.65rem;padding-top:.1rem}.header-action-link{flex:0 0 auto;justify-content:flex-start;min-height:2.65rem;padding:.66rem .8rem}.header-action-link span{white-space:normal}.section-card{padding-top:1.35rem;scroll-margin-top:7.5rem}.content-grid{gap:2rem;padding-top:1.85rem}.blog-view{padding-top:1.85rem}.page-nav{display:none}.mobile-menu-toggle{position:fixed;top:.75rem;right:.75rem;z-index:48;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border:1px solid color-mix(in srgb,var(--border) 82%,white 18%);border-radius:.9rem;background:color-mix(in srgb,var(--surface) 92%,transparent);color:var(--text);box-shadow:0 10px 24px #100c0814,inset 0 1px color-mix(in srgb,white 28%,transparent);backdrop-filter:blur(16px) saturate(135%);-webkit-backdrop-filter:blur(16px) saturate(135%);transition:border-color var(--ui-hover-duration) var(--ui-ease-out),background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out),box-shadow var(--ui-hover-duration) var(--ui-ease-out)}.mobile-menu-toggle svg{width:1.15rem;height:1.15rem}.mobile-menu-toggle:hover,.mobile-menu-toggle.is-open{border-color:var(--ui-hover-border);background:var(--ui-hover-background);color:var(--ui-hover-text);box-shadow:var(--ui-hover-shadow)}.mobile-menu-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mobile-theme-toggle{position:fixed;top:.75rem;right:4.25rem;z-index:48;display:block}.mobile-theme-toggle .control-button{width:3rem;height:3rem;min-height:3rem;padding:0;border:1px solid color-mix(in srgb,var(--border) 82%,white 18%);border-radius:.9rem;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 10px 24px #100c0814,inset 0 1px color-mix(in srgb,white 28%,transparent);backdrop-filter:blur(16px) saturate(135%);-webkit-backdrop-filter:blur(16px) saturate(135%)}.mobile-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:46;border:0;background:#140f0b2e;opacity:0;pointer-events:none;transition:opacity var(--ui-hover-duration) var(--ui-ease-out)}.mobile-menu-backdrop.is-open{display:block;opacity:1;pointer-events:auto}.mobile-nav{position:fixed;top:4.2rem;right:.75rem;left:.75rem;z-index:47;display:grid;gap:.35rem;padding:.45rem;border:1px solid color-mix(in srgb,var(--border) 82%,white 18%);border-radius:.95rem;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 10px 26px #100c0814,inset 0 1px color-mix(in srgb,white 28%,transparent);backdrop-filter:blur(16px) saturate(135%);-webkit-backdrop-filter:blur(16px) saturate(135%);opacity:0;transform:translateY(-.35rem);pointer-events:none;transition:opacity var(--ui-hover-duration) var(--ui-ease-out),transform var(--ui-hover-duration) var(--ui-ease-out)}.mobile-nav.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.mobile-nav a{display:flex;align-items:center;justify-content:flex-start;min-height:3rem;padding:.68rem .8rem;border-radius:.7rem;color:var(--text-muted);transition:background-color var(--ui-hover-duration) var(--ui-ease-out),color var(--ui-hover-duration) var(--ui-ease-out)}.mobile-nav a:hover,.mobile-nav a:focus-visible{background:var(--ui-hover-background);color:var(--ui-hover-text)}.mobile-nav a.is-active{background:var(--surface-strong);color:var(--text)}.mobile-nav a span{display:block;font-size:.9rem;line-height:1.1;text-align:left}.header-meta{display:none}.mobile-menu-tools{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.25rem;padding:.82rem .8rem .2rem;border-top:1px solid var(--border)}.mobile-menu-label{color:var(--text-muted);font-size:.84rem}.control-group{width:auto;gap:.5rem;align-items:center;justify-content:flex-start}.control-label{display:none}.control-button{min-height:2.55rem;padding:.55rem .78rem}.control-button-icon{width:2.55rem;height:2.55rem}.section-heading{margin-bottom:1rem}.section-heading h2,.project-card h3,.timeline-entry h3{font-size:1.08rem}.about-intro{gap:1rem;align-items:start}.about-intro-split,.about-intro-compact{grid-template-columns:minmax(0,1fr) 5.9rem;gap:.95rem}.about-primary{align-self:start;justify-content:flex-start}.about-portrait{width:5.9rem}.about-copy{gap:.8rem;max-width:none}.about-lead{font-size:1rem;line-height:1.65}.about-copy p:not(.about-lead){font-size:.96rem;line-height:1.68}.project-carousel-toolbar{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.75rem}.project-carousel{--project-carousel-gap: .85rem;gap:.85rem}.project-carousel-status{font-size:.82rem}.project-carousel-status{display:none}.project-card{gap:.75rem;padding:.9rem}.project-heading{gap:.65rem}.project-heading-meta{width:100%;justify-content:space-between}.project-repo-link{min-height:2rem;padding:.4rem .62rem}.project-repo-link span{font-size:.8rem}.tech-list{gap:.75rem}.tech-item{grid-template-columns:2.35rem minmax(0,1fr);gap:.75rem;padding:.85rem}.tech-icon{width:2.35rem;height:2.35rem}.timeline{gap:.85rem}.timeline-entry{gap:.6rem;padding:.95rem 0}.timeline-main p,.timeline-side p{max-width:none}.blog-article-toggle{padding:.95rem}.blog-article-header{display:grid;gap:.85rem}.blog-article-tags-row{padding:0 .95rem .95rem}.blog-article-control{justify-content:space-between}.blog-article-reading-area{padding:0 .95rem .95rem}.blog-article-body p{font-size:.96rem;line-height:1.72}.page-footer{align-items:flex-start;flex-direction:column;margin-top:1.5rem;padding-top:1.35rem}.page-footer p{font-size:.88rem}.footer-title-kana{font-size:.72rem;letter-spacing:.12em;text-align:left;white-space:normal}}@media (max-width: 610px){.header-main{padding-top:3rem}.page-header h1{font-size:clamp(1.95rem,9.4vw,2.65rem)}.mobile-menu-toggle{top:.65rem;right:.65rem;width:2.85rem;height:2.85rem}.mobile-theme-toggle{top:.65rem;right:3.9rem}.mobile-theme-toggle .control-button{width:2.85rem;height:2.85rem;min-height:2.85rem}}@media (max-width: 420px){.app-shell{width:min(calc(100% - 1.5rem),var(--max-width));padding-top:1.2rem}.header-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.header-action-link{width:auto;justify-content:center;min-width:0;text-align:center}.page-header h1{font-size:clamp(1.95rem,12vw,2.65rem)}.tech-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.tech-item{gap:.65rem;padding:.78rem}.tech-name{font-size:.9rem;line-height:1.28}.about-primary{justify-content:flex-start}.about-intro-split,.about-intro-compact{grid-template-columns:minmax(0,1fr) 5rem;gap:.8rem}.control-group{flex-direction:row;gap:.45rem}.control-button,.control-button-icon{align-self:flex-start}.mobile-nav{top:4rem;right:.625rem;left:.625rem;padding:.38rem}.mobile-menu-toggle{top:.625rem;right:.625rem;width:2.9rem;height:2.9rem}.mobile-theme-toggle{top:.625rem;right:4rem}.mobile-theme-toggle .control-button{width:2.9rem;height:2.9rem;min-height:2.9rem}.mobile-nav a{min-height:2.8rem;padding:.62rem .72rem}.mobile-nav a span{font-size:.84rem}.mobile-menu-tools{padding:.74rem .72rem .12rem}.mobile-menu-label{font-size:.8rem}.about-portrait{width:5rem}}
