*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.flex{display:flex}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.uppercase{text-transform:uppercase}.italic{font-style:italic}@import url("https://fonts.bunny.net/css?family=cormorant-garamond:400i,500,500i,600|inter:400,500,600|jetbrains-mono:400,500|noto-serif-jp:400,500,700&display=swap");:root{--paper:#f3eee5;--paper-2:#ece5d4;--paper-3:#e6dec9;--paper-line:#d4ccb8;--paper-line-2:#c7bda4;--ink:#1a1714;--ink-2:#4f4a40;--ink-3:#8a8273;--ink-4:#aaa28f;--vermillion:#d6071c;--vermillion-d:#a30414;--serif:"Cormorant Garamond","Source Serif Pro",Georgia,serif;--sans:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--jp:"Noto Serif JP","Yu Mincho","Hiragino Mincho ProN",serif;--maxw:1200px;--gutter:clamp(24px,5vw,96px)}*{box-sizing:border-box}body,html{margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:radial-gradient(rgba(26,23,20,.02) 1px,transparent 0),radial-gradient(rgba(26,23,20,.014) 1px,transparent 0);background-size:3px 3px,7px 7px;background-position:0 0,1px 2px}html[lang=ja] body{letter-spacing:.005em}::-moz-selection{background:var(--vermillion);color:var(--paper)}::selection{background:var(--vermillion);color:var(--paper)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--vermillion);outline-offset:3px;border-radius:2px}.skip-to-content{position:fixed;top:12px;left:12px;z-index:100;padding:8px 14px;background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;border-radius:2px;transform:translateY(-160%);transition:transform .2s ease}.skip-to-content:focus,.skip-to-content:focus-visible{transform:translateY(0)}.mono{font-size:11px;letter-spacing:.12em;color:var(--ink-2)}.mono,.mono-sm{font-family:var(--mono);text-transform:uppercase}.mono-sm{font-size:10px;letter-spacing:.14em;color:var(--ink-3)}.jp{font-family:var(--jp);font-weight:500}.serif{font-family:var(--serif)}.it{font-style:italic}.ink-2{color:var(--ink-2)}.ink-3{color:var(--ink-3)}.red{color:var(--vermillion)}.hinomaru{display:inline-block;width:.55em;height:.55em;border-radius:50%;background:var(--vermillion);vertical-align:middle;margin:0 .15em}.shell{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}.nav{position:sticky;top:0;z-index:50;background:transparent;backdrop-filter:saturate(120%) blur(10px);-webkit-backdrop-filter:saturate(120%) blur(10px);border-bottom:1px solid transparent;transition:background .28s ease,border-color .24s ease}.nav.is-scrolled{background:color-mix(in srgb,var(--paper) 92%,transparent);border-bottom-color:var(--paper-line)}.nav-inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:64px;gap:24px}.brand{display:inline-flex;align-items:baseline;gap:8px;font-family:var(--serif);font-size:18px;font-weight:500}.brand .dot{width:6px;height:6px;border-radius:50%;background:var(--vermillion);display:inline-block;transform:translateY(-2px)}.brand .name{letter-spacing:-.01em}.brand .jp-mini{font-family:var(--jp);font-size:11px;color:var(--ink-3);margin-left:4px}.nav-links{display:flex;gap:28px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);justify-self:center}.nav-links a{position:relative;padding:6px 0;transition:color .18s ease}.nav-links a:hover{color:var(--ink)}.nav-links a .num{color:var(--ink-4);margin-right:6px}.lang{display:inline-flex;align-items:center;padding:4px;border:1px solid var(--paper-line);border-radius:999px;font-family:var(--mono);font-size:10px;gap:2px}.lang a,.lang button{border:0;background:transparent;color:var(--ink-3);padding:5px 10px;border-radius:999px;cursor:pointer;font:inherit;letter-spacing:.1em;transition:all .18s ease}.lang a.is-active,.lang button.is-active{background:var(--ink);color:var(--paper)}.lang a:hover:not(.is-active),.lang button:hover:not(.is-active){color:var(--ink)}.nav-end{justify-self:end;gap:14px}.nav-cta,.nav-end{display:inline-flex;align-items:center}.nav-cta{gap:8px;padding:8px 16px;background:var(--ink);color:var(--paper);border-radius:999px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;transition:background .2s ease,transform .2s ease}.nav-cta:hover{background:var(--vermillion);transform:translateY(-1px)}.nav-cta:after{content:"→";font-family:var(--mono);transition:transform .2s ease}.nav-cta:hover:after{transform:translateX(3px)}@media (max-width:880px){.nav-inner{grid-template-columns:1fr auto;height:56px}.nav-links{display:none}}@media (max-width:540px){.nav-cta{padding:7px 12px;font-size:10px;gap:6px}}.progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--vermillion);z-index:60;transition:width 80ms linear}section.page{position:relative;padding:clamp(72px,10vw,140px) 0;border-top:1px solid var(--paper-line)}section.page:first-of-type{border-top:0}.sec-grid{display:grid;grid-template-columns:180px 1fr;gap:clamp(24px,5vw,96px);align-items:start}@media (max-width:760px){.sec-grid{grid-template-columns:1fr;gap:24px}}.sec-label{position:sticky;top:96px;display:flex;flex-direction:column;gap:14px}.sec-num{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}.sec-num:before{content:"";width:5px;height:5px;background:var(--vermillion);display:inline-block}.sec-kanji{font-family:var(--jp);font-size:28px;line-height:1;color:var(--vermillion);letter-spacing:.04em}.sec-eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}.sec-head{font-size:clamp(34px,4.6vw,56px);line-height:1.04;letter-spacing:-.012em;margin:0 0 28px;color:var(--ink);text-wrap:balance;font-weight:500}.sec-head,.sec-lede{font-family:var(--serif)}.sec-lede{font-size:clamp(18px,1.4vw,21px);line-height:1.5;color:var(--ink-2);max-width:56ch;margin:0 0 56px;text-wrap:pretty}@media (max-width:760px){section.page{padding:clamp(56px,12vw,96px) 0}.sec-label{position:static;flex-direction:row;align-items:center;gap:16px;flex-wrap:wrap}.sec-kanji{font-size:22px}.sec-head{margin-bottom:18px}.sec-lede{margin-bottom:32px}}.hero{min-height:calc(100svh - 64px);padding:clamp(28px,4vw,56px) 0 clamp(28px,3vw,48px);border-top:0;display:flex;flex-direction:column;position:relative;background:var(--paper);overflow:hidden;isolation:isolate}.hero:before{content:"大";right:-7vw;bottom:-14vw;font-family:var(--jp);font-weight:700;font-size:56vw;line-height:.82;color:rgba(26,23,20,.045);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0;letter-spacing:-.04em}.hero:after,.hero:before{position:absolute;pointer-events:none}.hero:after{content:"";left:var(--gutter);top:clamp(28px,4vw,56px);width:56px;height:6px;background:linear-gradient(90deg,var(--vermillion) 0 26px,transparent 26px 30px,var(--ink) 30px 56px);z-index:1}.hero>.shell{flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:clamp(32px,4vw,56px);position:relative;z-index:1}.hero+section.page{border-top:0}@media (max-width:880px){.hero{min-height:calc(100svh - 56px);padding-top:40px}.hero:before{font-size:84vw;right:-10vw;bottom:-22vw}.hero:after{top:18px}}.hero-inner{display:grid;grid-template-columns:1fr auto;gap:clamp(24px,4vw,72px);align-items:end}@media (max-width:760px){.hero{min-height:auto;padding-top:32px;padding-bottom:48px}.hero>.shell{justify-content:flex-start;gap:28px}.hero-inner{grid-template-columns:1fr;gap:24px}.hero-side{order:0}.hero-meta-top{flex-wrap:wrap;gap:6px 16px}.hero-meta-top .rule{display:none}}.hero-meta-top{display:flex;align-items:center;gap:18px;color:var(--ink-3);margin-top:clamp(26px,3vw,40px)}.hero-meta-top .rule{flex:1;height:1px;background:var(--paper-line)}.hero-title{font-family:var(--serif);font-weight:500;font-size:clamp(36px,5.4vw,76px);line-height:1.02;letter-spacing:-.018em;margin:0;text-wrap:balance}@media (max-width:760px){.hero-title{font-size:clamp(34px,9vw,56px);line-height:1.04}}.hero-title .it{font-style:italic;font-weight:500}.hero-title .amp{font-style:italic;color:var(--vermillion);font-weight:400}.hero-sub{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,48px);margin-top:clamp(20px,2.4vw,28px);padding-top:clamp(16px,1.6vw,22px);border-top:1px solid var(--paper-line)}@media (max-width:760px){.hero-sub{grid-template-columns:1fr}}.hero-sub p{font-family:var(--serif);font-size:clamp(15px,1.15vw,17.5px);line-height:1.5;color:var(--ink-2);margin:0;text-wrap:pretty;max-width:44ch}.hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:32px;padding-bottom:12px}.vertical-kanji{writing-mode:vertical-rl;text-orientation:upright;font-family:var(--jp);font-size:42px;font-weight:500;line-height:1.05;color:var(--ink);letter-spacing:.16em;position:relative}.vertical-kanji:before{content:"";position:absolute;left:-22px;top:6px;width:8px;height:8px;background:var(--vermillion);border-radius:50%}@media (max-width:760px){.vertical-kanji{display:none}.hero-side{flex-direction:column;align-items:flex-start;width:100%;gap:8px;padding-bottom:0}.hero-status{align-items:flex-start;text-align:left}}.hero-status{display:flex;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}.hero-status .pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--ink);border-radius:999px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:var(--paper)}.hero-status .pill .blip{width:7px;height:7px;border-radius:50%;background:var(--vermillion);box-shadow:0 0 0 0 rgba(214,7,28,.6);animation:blip 1.8s ease-out infinite}@keyframes blip{0%{box-shadow:0 0 0 0 rgba(214,7,28,.55)}70%{box-shadow:0 0 0 10px rgba(214,7,28,0)}to{box-shadow:0 0 0 0 rgba(214,7,28,0)}}.hero-status .small{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}.hero-fact-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--paper-line);border:1px solid var(--paper-line)}@media (max-width:760px){.hero-fact-row{grid-template-columns:1fr 1fr}}.hero-fact{background:var(--paper);padding:16px 18px;display:flex;flex-direction:column;gap:4px}@media (max-width:760px){.hero-fact{padding:14px 16px}}.hero-fact .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}.hero-fact .v{font-family:var(--serif);font-size:19px;color:var(--ink);line-height:1.1}.hero-fact .v .it{font-style:italic}.products{display:flex;flex-direction:column;border-top:1px solid var(--ink)}.product-entry{position:relative;display:grid;grid-template-columns:96px 1fr;gap:clamp(20px,3vw,48px);padding:clamp(28px,3.6vw,48px) 0;border-bottom:1px solid var(--paper-line)}.product-entry .pbody,.product-entry .pidx{transition:transform .24s ease}.product-entry:hover .pbody,.product-entry:hover .pidx{transform:translateX(8px)}.product-entry .spine{position:absolute;left:84px;top:clamp(36px,4vw,56px);bottom:clamp(28px,3vw,40px);width:2px;pointer-events:none}.product-entry[data-status=live] .spine{background:var(--vermillion);width:3px;left:83px}.product-entry[data-status=research] .spine{background:repeating-linear-gradient(to bottom,var(--vermillion) 0 6px,transparent 6px 12px)}.product-entry[data-status=dev] .spine{background:repeating-linear-gradient(to bottom,var(--ink-2) 0 2px,transparent 2px 6px)}.product-entry[data-status=shipped] .spine{background:var(--ink-2)}.product-entry:before{content:"";position:absolute;left:0;top:50%;width:0;height:1px;background:var(--vermillion);transform:translateY(-50%);transition:width .24s ease;pointer-events:none}.product-entry:hover:before{width:12px}.product-entry .meta-line{min-width:0}.product-entry .pidx{font-family:var(--serif);font-style:italic;font-size:clamp(40px,4.4vw,60px);line-height:.9;font-weight:500;color:var(--ink);letter-spacing:-.01em}.product-entry .pidx .red{color:var(--vermillion);font-style:normal}.product-entry[data-status=dev] .pidx .red,.product-entry[data-status=shipped] .pidx .red{color:var(--ink-2)}.product-entry .pbody{display:flex;flex-direction:column;gap:14px}.product-entry .meta-line{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.product-entry h3{font-family:var(--serif);font-size:clamp(26px,2.4vw,34px);font-weight:500;letter-spacing:-.012em;margin:0;line-height:1.02}.product-entry h3 .it{font-style:italic}.product-entry .rule{flex:1;min-width:24px;height:1px;background:var(--paper-line-2);align-self:center;transform:translateY(2px)}.product-entry .meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}.product-entry .meta .dot{color:var(--ink-4);margin:0 6px}.product-entry .badge{display:inline-flex;align-items:baseline;gap:7px;padding:0;background:transparent;border:0;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap}.product-entry .badge:before{content:"";width:7px;height:7px;border-radius:50%;flex-shrink:0;transform:translateY(-1px)}.product-entry .badge.live{color:var(--vermillion)}.product-entry .badge.live:before{background:var(--vermillion);box-shadow:0 0 0 0 rgba(214,7,28,.5);animation:blip 2s ease-out infinite}.product-entry .badge.research{color:var(--vermillion)}.product-entry .badge.research:before{background:transparent;border:1.5px solid var(--vermillion)}.product-entry .badge.dev{color:var(--ink-2)}.product-entry .badge.dev:before{background:transparent;border:1.5px dashed var(--ink-3)}.product-entry .badge.shipped{color:var(--ink-2)}.product-entry .badge.shipped:before{background:var(--ink-2)}.product-entry.is-flagship{background:linear-gradient(90deg,rgba(214,7,28,.025) 0,rgba(214,7,28,.025) 84px,transparent 0)}.product-entry.is-flagship .pidx{font-size:clamp(48px,5.4vw,72px)}.product-entry.is-flagship h3{font-size:clamp(30px,2.8vw,40px)}.product-entry.is-flagship .flag-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:4px;font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--vermillion)}.product-entry.is-flagship .flag-eyebrow:before{content:"";height:1px;width:18px;background:var(--vermillion)}.product-entry .lede{font-family:var(--serif);font-size:clamp(16.5px,1.2vw,18.5px);line-height:1.5;color:var(--ink-2);margin:0;max-width:64ch}.product-entry.is-flagship .lede{font-size:clamp(17px,1.3vw,20px);color:var(--ink)}.product-entry .foot{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:baseline;margin-top:2px}.product-entry .stack-tags{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--ink-3)}.product-entry .stack-tags span:not(:last-child):after{content:" · ";color:var(--ink-4)}.product-entry .visit{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:2px;transition:color .2s ease,border-color .2s ease;justify-self:end}.product-entry:hover .visit{color:var(--vermillion);border-color:var(--vermillion)}.product-entry .companion{margin-top:14px;padding:14px 0 4px 22px;border-left:2px solid var(--paper-line-2);display:grid;grid-template-columns:1fr 1fr auto;gap:18px;align-items:baseline}.product-entry[data-status=live] .companion{border-left-color:var(--vermillion)}.product-entry .companion .c-name{font-family:var(--serif);font-style:italic;font-size:18px;font-weight:500;color:var(--ink)}.product-entry .companion .c-desc{font-family:var(--serif);font-size:15.5px;line-height:1.5;color:var(--ink-2)}.product-entry .companion .c-link{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);border-bottom:1px dotted var(--ink-3);padding-bottom:2px;transition:color .2s ease,border-color .2s ease;justify-self:end;white-space:nowrap}.product-entry .companion .c-link:hover{color:var(--vermillion);border-color:var(--vermillion)}@media (max-width:900px){.product-entry{grid-template-columns:1fr;gap:12px;padding:28px 0}.product-entry .pidx{font-size:32px}.product-entry .rule,.product-entry .spine{display:none}.product-entry .companion{grid-template-columns:1fr;gap:6px}.product-entry .companion .c-link{justify-self:start}.product-entry .foot{grid-template-columns:1fr;gap:8px}.product-entry .visit{justify-self:start}.product-entry.is-flagship{background:none}}.timeline{position:relative}.timeline:before{content:"";position:absolute;left:88px;top:6px;bottom:6px;width:1px;background:var(--paper-line-2)}@media (max-width:760px){.timeline:before{left:6px}}.tl-item{position:relative;display:grid;grid-template-columns:88px 1fr;gap:36px;padding:20px 0 28px}@media (max-width:760px){.tl-item{grid-template-columns:1fr;padding-left:28px;gap:4px}}.tl-item .when{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--ink-2);padding-top:4px}.tl-item .node{position:absolute;left:84px;top:9px;width:9px;height:9px;background:var(--paper);border:1.5px solid var(--ink);border-radius:50%}.tl-item.is-current .node{background:var(--vermillion);border-color:var(--vermillion);box-shadow:0 0 0 4px rgba(214,7,28,.16)}@media (max-width:760px){.tl-item .node{left:2px;top:6px}}.tl-item h3{font-family:var(--serif);font-weight:500;font-size:22px;margin:0;letter-spacing:-.005em}.tl-item h3 .at{color:var(--ink-3)}.tl-item h3 .org{font-style:italic;color:var(--ink)}.tl-item p{margin:6px 0 0;color:var(--ink-2);font-size:14.5px;max-width:60ch}.tl-item .tag-row{margin-top:10px;display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-3)}.stack{display:grid;grid-template-columns:1fr;border-top:1px solid var(--paper-line)}.stack-row{display:grid;grid-template-columns:140px 1fr;gap:32px;padding:22px 0;border-bottom:1px solid var(--paper-line);align-items:baseline}@media (max-width:600px){.stack-row{grid-template-columns:1fr;gap:6px}}.stack-row .cat{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}.stack-row .cat:before{content:"/ ";color:var(--ink-4)}.stack-row .items{font-family:var(--serif);font-size:18.5px;line-height:1.55;color:var(--ink)}.stack-row .items span:not(:last-child):after{content:" · ";color:var(--ink-4);margin:0 4px}.stack-row .items .accent{color:var(--vermillion);font-style:italic}#contact{scroll-margin-top:80px}.contact-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--paper-line);border:1px solid var(--paper-line);margin-bottom:40px}@media (max-width:720px){.contact-actions{grid-template-columns:1fr}}.c-btn{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;-moz-column-gap:14px;column-gap:14px;row-gap:4px;align-items:center;background:var(--paper);padding:22px 26px;color:inherit;transition:background .22s ease;position:relative;isolation:isolate}.c-btn:hover{background:var(--paper-3)}.c-btn .c-btn-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);grid-row:1;grid-column:1}.c-btn .c-btn-v{font-family:var(--serif);font-size:clamp(18px,1.5vw,22px);color:var(--ink);line-height:1.2;grid-row:2;grid-column:1}.c-btn .c-btn-arrow{grid-row:1/3;grid-column:2;align-self:center;font-family:var(--mono);font-size:18px;color:var(--ink-3);transition:transform .22s ease,color .22s ease}.c-btn:hover .c-btn-arrow{transform:translateX(4px);color:var(--vermillion)}.c-btn.primary{background:var(--ink);color:var(--paper)}.c-btn.primary:hover{background:var(--vermillion)}.c-btn.primary .c-btn-k{color:rgba(243,238,229,.6)}.c-btn.primary .c-btn-v{color:var(--paper);font-style:italic}.c-btn.primary .c-btn-arrow{color:var(--paper)}.contact-meta{display:grid;grid-template-columns:1fr;border-top:1px solid var(--paper-line)}.cm-row{display:grid;grid-template-columns:160px 1fr;gap:24px;padding:14px 0;border-bottom:1px solid var(--paper-line);align-items:baseline}.cm-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}.cm-v{font-family:var(--serif);font-size:clamp(15px,1.1vw,17.5px);color:var(--ink)}.cm-mut{color:var(--ink-3);font-style:italic}@media (max-width:540px){.cm-row{grid-template-columns:1fr;gap:4px;padding:12px 0}}footer.site{border-top:1px solid var(--paper-line);padding:clamp(48px,5vw,72px) 0 60px;color:var(--ink-3)}.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:clamp(24px,4vw,56px);align-items:start}.foot-col{display:flex;flex-direction:column;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-2)}.foot-col a{color:var(--ink-2);border-bottom:1px solid transparent;padding-bottom:1px;transition:color .18s ease,border-color .18s ease}.foot-col a:hover{color:var(--vermillion);border-bottom-color:var(--vermillion)}.foot-col .foot-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-4);margin-bottom:6px}.foot-col .muted{color:var(--ink-3)}.foot-col-brand .brand-big{font-family:var(--serif);font-size:26px;color:var(--ink);letter-spacing:-.01em}.foot-col-brand .brand-big .dot{color:var(--vermillion)}.foot-col-brand small{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:8px}.foot-col-sig{align-items:flex-end;text-align:right}.foot-col-sig .jp-tall{font-family:var(--jp);writing-mode:vertical-rl;text-orientation:upright;font-size:16px;color:var(--ink-2);letter-spacing:.2em;margin-bottom:8px}.foot-col-sig small{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}@media (max-width:760px){.foot-grid{grid-template-columns:1fr 1fr}.foot-col-sig{align-items:flex-start;text-align:left;grid-column:1/-1}.foot-col-sig .jp-tall{writing-mode:horizontal-tb;text-orientation:unset}}.resume-fab{position:fixed;right:clamp(16px,2.4vw,32px);bottom:clamp(20px,3vw,36px);z-index:55;display:inline-flex;align-items:center;gap:12px;padding:14px 22px;background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;text-decoration:none;border-radius:2px;box-shadow:0 14px 40px rgba(26,23,20,.18),0 4px 14px rgba(26,23,20,.1);transition:transform .24s cubic-bezier(.2,.7,.2,1),background .2s ease,box-shadow .24s ease,opacity .32s ease}.resume-fab:hover{background:var(--vermillion);transform:translateY(-2px);box-shadow:0 20px 50px rgba(26,23,20,.22),0 6px 18px rgba(214,7,28,.28)}.resume-fab .icon{width:13px;height:13px;flex-shrink:0}.resume-fab .label{line-height:1}.resume-fab .arrow{transition:transform .22s ease;display:inline-block}.resume-fab:hover .arrow{transform:translateX(4px)}.resume-fab.is-hidden{opacity:0;transform:translateY(20px);pointer-events:none}@media (max-width:640px){.resume-fab{padding:11px 16px;font-size:10px;gap:8px}.resume-fab .icon{width:11px;height:11px}}.reveal{opacity:0;transform:translateY(14px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--rd,0s)}.reveal.is-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.blip,.hero-status .pill .blip{animation:none!important}html{scroll-behavior:auto}}@media print{.nav,.progress,.resume-fab{display:none!important}}