:root[data-theme=dark]{--bg: #08111f;--bg-2: #0a1424;--surface: #0d1626;--surface-2: #101a2d;--surface-hi: #121d33;--line: #182338;--line-2: #22304c;--text: #ecf0f8;--text-2: #aab4cc;--text-3: #757f9a;--text-4: #4a5371;--muted: #6b7591;--accent: #d78b3d;--accent-2: #f0b56a;--accent-soft: rgba(240,181,106,.1);--accent-line: rgba(240,181,106,.3);--link: #8ab4ff;--tag-bg: #0e1828;--tag-text: #b6c1de;--shadow: 0 0 0 1px rgba(255,255,255,.015);--btn-text: #ffffff;--hairline: rgba(255,255,255,.04);--row-hover: rgba(255,255,255,.018)}:root[data-theme=light]{--bg: #fbf8f6;--bg-2: #f5f1ec;--surface: #ffffff;--surface-2: #fcfaf9;--surface-hi: #f4efe8;--line: #e6ded2;--line-2: #d4cab9;--text: #14202f;--text-2: #34405a;--text-3: #6a7184;--text-4: #8a90a1;--muted: #7a8194;--accent: #9a5c24;--accent-2: #9a5c24;--accent-soft: rgba(154,92,36,.1);--accent-line: rgba(154,92,36,.3);--link: #1d5fd3;--tag-bg: #efeae0;--tag-text: #4a5365;--shadow: 0 0 0 1px rgba(20,30,50,.02);--btn-text: #ffffff;--hairline: rgba(20,30,50,.06);--row-hover: rgba(20,30,50,.022)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{min-height:100%}body{background:var(--bg);color:var(--text);font-family:Noto Sans JP,Inter,system-ui,-apple-system,sans-serif;font-feature-settings:"palt" 1;font-size:13.5px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .25s ease,color .25s ease;display:flex;flex-direction:column;min-height:100vh}body>main{flex:1 0 auto}body>footer{flex-shrink:0}.en,.display-en{font-family:Cormorant Garamond,"Noto Serif JP",serif}.body-en{font-family:Inter,Noto Sans JP,sans-serif}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}:root[data-theme=dark] .theme-light-only{display:none!important}:root[data-theme=light] .theme-dark-only{display:none!important}.ico-tile.has-image img[src*=m-naoki-m-icon],.icon-tile.has-image img[src*=m-naoki-m-icon]{transform:scale(1.32)}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}:focus{outline:none}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:4px}button:focus-visible,.btn:focus-visible,.filters button:focus-visible,.wr-filters button:focus-visible,.up-filters button:focus-visible,.pages button:focus-visible{outline-offset:2px}a.pcard:focus-visible,a.proj-featured:focus-visible,a.ext-card:focus-visible,a.link-row:focus-visible,a.related-row:focus-visible{outline-offset:3px}.skip-link{position:absolute;top:8px;left:8px;z-index:100;padding:8px 14px;background:var(--surface-hi);color:var(--text);border:1px solid var(--accent-line);border-radius:6px;font-size:13px;font-weight:500;transform:translateY(-150%);transition:transform .15s ease}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0);outline:2px solid var(--accent-2);outline-offset:2px}@media(prefers-reduced-motion:reduce){.skip-link,body{transition:none}}.page{width:100%;margin:0 auto;padding-left:48px;padding-right:48px;box-sizing:border-box}.ph,.filters,.pgrid,.proj-featured,.wh,.wr-filters,.writing,.ab-ph,.row2,.row3,.ext,.up-ph,.timeline,.ct-ph,.ct-grid,.welcome,.pd-hero,.pd-grid,.crumbs{width:100%;box-sizing:border-box}.site-header{border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:20;backdrop-filter:blur(8px)}.site-header .inner{display:flex;align-items:center;justify-content:space-between;height:68px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.01em;color:var(--text);font-size:14px}.logo-mark{width:26px;height:26px;display:inline-grid;place-items:center;background:transparent;line-height:0;overflow:hidden;border-radius:7px;position:relative}.logo-mark-img{width:34px;height:34px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);object-fit:cover}:root[data-theme=dark] .logo-mark-light{display:none}:root[data-theme=light] .logo-mark-dark{display:none}.nav{display:flex;align-items:center;gap:32px;color:var(--text-3);font-size:13px}.nav a{color:var(--text-2);transition:color .15s ease}.nav a:hover{color:var(--text)}.lang{display:inline-flex;align-items:center;gap:0;font-family:Inter,sans-serif;font-size:12px;color:var(--text-3);letter-spacing:.04em;margin-left:4px;border:1px solid var(--line);border-radius:4px;overflow:hidden}.lang button{padding:5px 10px;background:transparent;border:0;color:var(--text-3);font-weight:500}.lang button.active{background:var(--surface-2);color:var(--text)}.theme-toggle{margin-left:0;width:26px;height:26px;display:inline-grid;place-items:center;background:transparent;border:0;border-radius:4px;color:var(--text-2);cursor:pointer;padding:0}.theme-toggle:hover{color:var(--text)}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:36px;padding:40px 0 28px}.hero h1{font-family:"Noto Serif JP",serif;font-weight:600;font-size:40px;line-height:1.4;letter-spacing:.005em;margin:0 0 20px;color:var(--text)}.hero h1 .accent{color:var(--text)}:root[data-theme=light] .hero h1 .accent{color:var(--text)}.hero .sub{color:var(--text-2);font-size:13px;line-height:1.8;max-width:520px;margin:0 0 24px}.cta-row{display:flex;gap:12px}.btn{display:inline-flex;align-items:center;gap:10px;padding:12px 22px;font-size:13px;font-weight:500;letter-spacing:.02em;border-radius:6px;transition:transform .18s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease;position:relative;will-change:transform}.btn-primary{color:var(--btn-text);background:linear-gradient(180deg,#2c4ea3,#1a3074);border:1px solid rgba(255,255,255,.05);box-shadow:inset 0 1px #ffffff1a,0 1px 2px #0003}.btn-primary:hover{transform:translateY(-1px);background:linear-gradient(180deg,#335ab5,#1f3786);box-shadow:inset 0 1px #ffffff24,0 3px 8px #0000004d}.btn-primary:active{transform:translateY(0);box-shadow:inset 0 1px #ffffff14,0 1px 2px #0003}:root[data-theme=light] .btn-primary{background:linear-gradient(180deg,#4a3d31,#2e261f);border-color:#52433452;box-shadow:inset 0 1px #fff3,0 1px 2px #29231c24}:root[data-theme=light] .btn-primary:hover{background:linear-gradient(180deg,#554635,#362c22);box-shadow:inset 0 1px #ffffff3d,0 4px 12px #29231c29}.btn-ghost{background:linear-gradient(180deg,var(--surface-2),var(--surface));color:var(--text);border:1px solid var(--line-2);box-shadow:inset 0 1px #ffffff0a,0 1px 2px #0003}.btn-ghost:hover{transform:translateY(-1px);border-color:var(--accent-line);box-shadow:inset 0 1px #ffffff0f,0 4px 12px #00000047}:root[data-theme=light] .btn-ghost{background:linear-gradient(180deg,#fff,#f7f1e8);box-shadow:inset 0 1px #fff9,0 1px 2px #141e320d}:root[data-theme=light] .btn-ghost:hover{box-shadow:inset 0 1px #ffffffb3,0 4px 12px #141e321a}.btn .arrow{font-size:14px;line-height:1}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}.stat{padding:16px 18px 14px;border-right:1px solid var(--line)}.stat:last-child{border-right:0}.stat .ico{color:var(--text-3);margin-bottom:8px}.stat .num{font-family:"Noto Serif JP",serif;font-size:24px;font-weight:600;color:var(--text);line-height:1;margin-bottom:6px}.stat .lbl{font-size:12px;color:var(--text-3);letter-spacing:.02em}.stat.text .num{font-size:13px;font-family:Noto Sans JP,Inter,sans-serif;font-weight:500;color:var(--text);line-height:1.45;margin-top:2px}.approach{margin-top:14px;border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px 18px 18px}.approach>h2{margin:0 0 6px;font-family:"Noto Serif JP",serif;font-size:16px;font-weight:600;color:var(--text);letter-spacing:.01em}.approach .lead{margin:0 0 18px;font-size:12.5px;color:var(--text-3);line-height:1.7}.approach-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ap-card{border:1px solid var(--line);border-radius:5px;padding:14px 16px;background:var(--surface-2);position:relative}.ap-card.primary{background:var(--surface-2);border-color:var(--line)}.ap-card .kicker{font-size:10.5px;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase;margin-bottom:8px;font-family:JetBrains Mono,monospace;font-weight:500}.ap-card .head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:6px}.ap-card h3{margin:0;font-family:"Noto Serif JP",serif;font-size:17px;font-weight:600;color:var(--text);line-height:1.4}.ap-card .ico{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;color:var(--text-2);background:var(--bg-2);flex-shrink:0}.ap-card .desc{margin:6px 0 14px;font-size:12.5px;color:var(--text-3);line-height:1.7}.ap-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.ap-card li{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;color:var(--text-2);line-height:1.55}.ap-card li .check{flex-shrink:0;color:var(--accent-2);margin-top:4px}:root[data-theme=light] .ap-card li .check{color:var(--accent)}.section{display:grid;grid-template-columns:168px 1fr;gap:24px;padding:22px 0}.section .label h2{margin:0 0 8px;font-family:"Noto Serif JP",serif;font-size:18px;font-weight:600;color:var(--text);letter-spacing:.01em;line-height:1.5}.section .label p{margin:0 0 14px;font-size:12px;color:var(--text-3);line-height:1.7}.section .label .all{font-size:12px;color:var(--link);display:inline-flex;align-items:center;gap:6px}.lifecycle{display:grid;grid-template-columns:repeat(5,1fr);align-items:stretch;gap:0;border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}.lc-step{padding:14px;border-right:1px solid var(--line);position:relative}.lc-step:last-child{border-right:0}.lc-step .top-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.lc-step .ico{color:var(--text-3)}.lc-step .num{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;color:var(--accent-2);letter-spacing:.08em}:root[data-theme=light] .lc-step .num{color:var(--accent)}.lc-step h3{margin:0 0 6px;font-family:"Noto Serif JP",serif;font-size:13px;font-weight:600;color:var(--text);line-height:1.4}.lc-step p{margin:0;font-size:11.5px;color:var(--text-3);line-height:1.55}.lc-step .arrow-r{position:absolute;right:-7px;top:50%;transform:translateY(-50%);width:14px;height:14px;background:var(--bg);color:var(--text-4);display:grid;place-items:center;z-index:2}:root[data-theme=light] .lc-step .arrow-r{color:var(--text-3)}.projects{display:grid;grid-template-columns:1.65fr 1fr 1fr;gap:16px}.pj{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px 18px;display:flex;flex-direction:column;transition:border-color .15s ease,transform .15s ease,background .15s ease;text-decoration:none;color:inherit}.pj:hover{border-color:var(--line-2);background:var(--row-hover)}.pj .platform{font-size:11px;color:var(--text-3);letter-spacing:.06em;font-family:JetBrains Mono,monospace;font-weight:500;margin-bottom:8px}.pj h3{margin:0 0 8px;font-family:"Noto Serif JP",serif;font-size:22px;font-weight:600;color:var(--text);line-height:1.25}.pj .desc{margin:0 0 14px;font-size:12.5px;color:var(--text-3);line-height:1.7}.pj .stack{display:flex;flex-wrap:wrap;gap:8px 14px;margin-bottom:16px;font-size:11.5px;color:var(--text-3);font-family:JetBrains Mono,monospace}.pj .more{margin-top:auto;font-size:12.5px;color:var(--link);display:inline-flex;align-items:center;gap:8px}.pj.featured{display:grid;grid-template-columns:1fr 168px;gap:22px;align-items:stretch}.pj.featured>.left{display:flex;flex-direction:column}.pj.featured .phone-wrap{align-self:stretch;display:flex;align-items:center;justify-content:center;margin:-4px -4px -4px 0}.pj .icon-tile{width:32px;height:32px;border-radius:7px;display:grid;place-items:center;margin-bottom:14px;background:var(--surface-2);border:1px solid var(--line)}.pj .icon-tile.leaf,.pj .icon-tile.green{background:linear-gradient(180deg,#163b2f,#0e2a22);border-color:#1f4e3e;color:#6fd6a4}.pj .icon-tile.focus,.pj .icon-tile.blue{background:linear-gradient(180deg,#15233e,#0f1a30);border-color:#233762;color:#87a8ff}.pj .icon-tile.purple{background:linear-gradient(180deg,#2a1f44,#160e2a);border-color:#3c2f5e;color:#b89cf2}.pj .icon-tile.amber{background:linear-gradient(180deg,#3a2718,#20140b);border-color:#5c3d23;color:#f0b56a}:root[data-theme=light] .pj .icon-tile.leaf,:root[data-theme=light] .pj .icon-tile.green{background:#e7f3ec;border-color:#c7dfd0;color:#2f7a55}:root[data-theme=light] .pj .icon-tile.focus,:root[data-theme=light] .pj .icon-tile.blue{background:#e8eefc;border-color:#c9d4ee;color:#2f5fd6}:root[data-theme=light] .pj .icon-tile.purple{background:#f3edfa;border-color:#d9c8ec;color:#5d3aa0}:root[data-theme=light] .pj .icon-tile.amber{background:#fdf3e6;border-color:#ecd5b0;color:#9a5c24}.pj.featured .feat-block{width:168px;height:220px;border-radius:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:linear-gradient(160deg,#1f2c4d,#101a32);border:1px solid #2a355a;box-shadow:0 12px 28px #00000073;color:var(--text)}.pj.featured .feat-block.green{background:linear-gradient(160deg,#1c3a2e,#0f2218);border-color:#1f4e3e}.pj.featured .feat-block.purple{background:linear-gradient(160deg,#2a1f44,#160e2a);border-color:#3c2f5e}.pj.featured .feat-block.amber{background:linear-gradient(160deg,#3a2718,#20140b);border-color:#5c3d23}.pj.featured .feat-mark-lg{font-family:Cormorant Garamond,"Noto Serif JP",serif;font-size:80px;font-weight:600;color:var(--accent-2);line-height:1}:root[data-theme=light] .pj.featured .feat-mark-lg{color:var(--accent)}:root[data-theme=light] .pj.featured .feat-block{background:linear-gradient(160deg,#fffaf0,#f0e4cb);border-color:var(--line-2);box-shadow:0 10px 22px #0000001a}:root[data-theme=light] .pj.featured .feat-block.green{background:linear-gradient(160deg,#effaf0,#d4ead8)}:root[data-theme=light] .pj.featured .feat-block.purple{background:linear-gradient(160deg,#f5f0fb,#e0d0eb)}:root[data-theme=light] .pj.featured .feat-block.amber{background:linear-gradient(160deg,#fdf3e6,#f0d9b5)}.iphone{width:168px;height:340px;border-radius:28px;background:linear-gradient(180deg,#1d2742,#0e1730);padding:6px;border:1px solid #2a355a;box-shadow:inset 0 1px #ffffff0f,0 6px 24px #00000059;position:relative}:root[data-theme=light] .iphone{background:linear-gradient(180deg,#2a3146,#1a2034);border-color:#3a4258;box-shadow:0 8px 26px #141e322e}.iphone .screen{width:100%;height:100%;border-radius:22px;background:#0a1224;overflow:hidden;position:relative;color:#e8ecf5;font-size:9px;font-family:Inter,Noto Sans JP,sans-serif}.iphone .notch{position:absolute;top:6px;left:50%;transform:translate(-50%);width:56px;height:14px;background:#000;border-radius:8px;z-index:2}.iphone .status{display:flex;justify-content:space-between;padding:7px 14px 0;font-size:9px;font-weight:600;color:#e8ecf5;letter-spacing:.02em}.iphone .status .icons{display:inline-flex;gap:3px;align-items:center;color:#cdd5e8}.iphone .body{padding:22px 14px 10px}.iphone .title-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.iphone .loc{font-size:9.5px;color:#cdd5e8;font-weight:500}.iphone .date{font-size:8px;color:#8993ad}.iphone .bignum{margin-top:6px;font-family:"Noto Serif JP",serif;font-size:38px;font-weight:600;line-height:1;color:#fff;letter-spacing:-.01em}.iphone .bignum .unit{font-size:16px;color:#cdd5e8;margin-left:2px;font-family:Inter,sans-serif;font-weight:500}.iphone .updown{font-size:9px;color:#8da4ff;margin-top:2px}.iphone .chart{margin-top:8px;height:92px;background:linear-gradient(180deg,#5b8cff1f,#5b8cff00);border-radius:4px;position:relative;overflow:hidden}.iphone .chart svg{display:block;width:100%;height:100%}.iphone .ticks{display:flex;justify-content:space-between;font-size:7.5px;color:#6b7591;margin-top:4px;padding:0 2px;font-family:JetBrains Mono,monospace}.iphone .seg{margin-top:10px;display:grid;grid-template-columns:repeat(4,1fr);background:#131e3a;border:1px solid #1e2b4a;border-radius:5px;padding:2px;font-size:8.5px}.iphone .seg span{text-align:center;padding:4px 0;color:#8993ad;border-radius:3px}.iphone .seg span.on{background:#25c;color:#fff}.iphone .photo{position:absolute;inset:0;background:linear-gradient(180deg,#0a122400 50%,#0a1224d9),linear-gradient(135deg,#2d3a5a,#1a2440,#0f1a30);z-index:-1}.iphone .photo:after{content:"";position:absolute;inset:60% 0 0;background:radial-gradient(120% 80% at 30% 100%,#4a5570 0%,transparent 60%),radial-gradient(120% 80% at 70% 100%,#2a3450 0%,transparent 55%);opacity:.7}.writing{border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}.writing table{width:100%;border-collapse:collapse;font-size:13px}.writing thead th{text-align:left;font-weight:500;font-size:11.5px;color:var(--text-3);letter-spacing:.05em;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--surface-2)}.writing tbody td{padding:12px 16px;border-bottom:1px solid var(--hairline);color:var(--text-2);vertical-align:middle}.writing tbody td.pubdate{white-space:nowrap}.writing tbody td.row-arrow{text-align:right;padding-right:20px}.writing tbody tr:last-child td{border-bottom:0}.writing tbody tr:hover td{background:var(--row-hover)}.src{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;color:var(--text)}.src .src-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;flex-shrink:0}.src .src-icon svg{width:14px;height:14px;display:block}.src .src-label{font-weight:500;color:var(--text)}.src.zenn .src-icon{background:#3ea8ff;color:#fff}.src.note .src-icon{background:#1a1a1a;color:#fff}.src.qiita .src-icon{background:#55c500;color:#fff}.src.medium .src-icon{background:#000;color:#fff}.src.note .brand-letter{font-family:Inter,sans-serif;font-weight:700;font-size:13px;line-height:1;letter-spacing:-.02em}.src.blog .src-icon{background:transparent;padding:0;overflow:hidden}.src.blog .src-icon img{width:100%;height:100%;object-fit:cover;border-radius:4px}.src.blog .src-icon:has(svg){background:var(--surface-2);color:var(--text-2);border:1px solid var(--line)}.src.zenn .src-icon svg{width:12px;height:12px}.lang-pill{display:inline-block;padding:2px 8px;border:1px solid var(--line-2);border-radius:3px;font-size:10.5px;font-family:JetBrains Mono,monospace;font-weight:500;color:var(--text-2);letter-spacing:.04em}.lang-cell{white-space:nowrap}.lang-cell .lang-pill+.lang-pill{margin-left:4px}.pubdate{color:var(--text-3);font-size:12.5px;font-variant-numeric:tabular-nums}.row-arrow{color:var(--text-4)}:root[data-theme=light] .row-arrow{color:var(--text-3)}.writing td.title,.writing td.title a{color:var(--text);font-weight:400}.site-footer{border-top:1px solid var(--line);background:var(--bg)}.site-footer .inner{display:flex;align-items:center;justify-content:space-between;padding:26px 0;font-size:12px;color:var(--text-3)}.site-footer .center{color:var(--text-3)}.site-footer nav{display:flex;gap:28px;color:var(--text-2)}.site-footer nav a:hover{color:var(--text)}svg.i{display:inline-block;vertical-align:middle}::selection{background:var(--accent-soft);color:var(--text)}.chip-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.chip-row .chip{background:transparent;border:1px solid var(--line-2);color:var(--text-3);font-family:inherit;font-size:12.5px;font-weight:500;padding:7px 16px;border-radius:999px;cursor:pointer;line-height:1;transition:background .15s,color .15s,border-color .15s}.chip-row .chip:hover{color:var(--text);border-color:var(--text-3)}.chip-row .chip.on{background:linear-gradient(180deg,#bf772d6b,#74461b8a);color:#fff0dc;border-color:#f0b56a6b}:root[data-theme=light] .chip-row .chip.on{background:#e2dacea3;color:var(--text);border-color:#ad9f8cad}.chip-row .chip-divider{width:1px;height:18px;background:var(--line-2);margin:0 4px}:root[data-theme=dark]{--bg: #06101e;--bg-2: #071321;--surface: rgba(8, 18, 32, .78);--surface-2: rgba(10, 22, 38, .72);--surface-hi: rgba(11, 24, 42, .84);--line: rgba(124, 143, 178, .18);--line-2: rgba(137, 158, 196, .3);--text: #f0ece8;--text-2: #c2c4cc;--text-3: #929aa9;--text-4: #596579;--accent: #d78b3d;--accent-2: #f0b56a;--accent-soft: rgba(240, 181, 106, .11);--accent-line: rgba(240, 181, 106, .34);--link: #8ab4ff}body{background:radial-gradient(900px 520px at 14% 3%,rgba(17,39,62,.62),transparent 62%),radial-gradient(840px 500px at 88% 20%,rgba(10,29,52,.42),transparent 70%),linear-gradient(180deg,#06101e,#07111f 48%,#050d19)}:root[data-theme=light] body{background:radial-gradient(900px 520px at 8% 4%,rgba(232,222,206,.55),transparent 62%),linear-gradient(180deg,#fbf8f6,#f8f3ed)}.page{max-width:none;padding-left:50px;padding-right:50px}.site-header{background:#06101ee6}:root[data-theme=light] .site-header{background:#fbf8f6eb}.site-header .inner{height:50px}.brand{font-family:Cormorant Garamond,"Noto Serif JP",serif;font-size:21px;font-weight:600;letter-spacing:.045em;gap:12px}.nav{gap:33px;font-size:13px}.nav .theme-toggle{margin-left:-23px}.mobile-menu-btn{display:none!important}.lang{border:0;border-radius:0;overflow:visible;margin-left:0;color:var(--text-4)}.lang a,.lang button{padding:0}.site-footer{background:#06101ee6}:root[data-theme=light] .site-footer{background:#fbf8f6eb}.site-footer .inner{min-height:92px;padding:16px 50px 14px;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"brand spacer nav" "copy copy copy";align-items:center;row-gap:10px}.site-footer .brand{grid-area:brand}.site-footer .center{grid-area:copy;width:100%;text-align:center;justify-self:center}.site-footer nav{grid-area:nav;justify-self:end;gap:32px}.hero{grid-template-columns:520px minmax(0,1fr);gap:44px;padding:24px 50px}.hero h1{font-size:40px;line-height:1.42;margin-bottom:20px}.hero .sub{max-width:500px;font-size:13px;line-height:1.8;margin-bottom:28px}.btn{min-width:178px;justify-content:center;padding:13px 22px;border-radius:5px}.stats{background:#08122099}.stat{padding:17px 42px 15px}.stat .num{font-size:24px;color:var(--accent-2)}.approach{margin-top:13px;padding:12px 18px 10px;background:#0812208c}.approach>h2{font-size:22px;margin-bottom:3px}.approach .lead{color:var(--text-2);line-height:1.45;margin-bottom:8px}.ap-card{padding:10px 16px 11px;background:#091424a8}.ap-card h3{font-size:18px}.ap-card .kicker{margin-bottom:5px}.ap-card .desc{margin:4px 0 8px;line-height:1.45}.ap-card ul{gap:5px}.ap-card li{font-size:11.5px;line-height:1.38}.ap-card li .check{margin-top:2px}.section{grid-template-columns:165px 1fr;gap:50px;padding:7px 50px;border-top:1px solid var(--line)}.lifecycle,.projects,.writing{background:transparent}.lc-step{padding:9px 18px}.projects{gap:17px}.pj{background:#08122094;padding:17px 20px;min-height:193px}.pj.featured{grid-template-columns:1fr 192px;min-height:248px;height:auto;overflow:visible}.pj.featured .phone-wrap{overflow:visible;align-items:center;margin:0 -4px 0 0}.pj.featured .iphone{width:128px;height:258px}.pj.featured .feat-shot{width:auto;height:auto;background:transparent;border:0;box-shadow:none;overflow:visible;display:flex;align-items:center;justify-content:center}.pj.featured .feat-shot img{width:auto;height:auto;max-height:280px;max-width:100%;border-radius:18px;background:var(--surface-2);border:1px solid var(--line);box-shadow:0 12px 28px #00000073;display:block;object-fit:initial}:root[data-theme=light] .pj.featured .feat-shot img{box-shadow:0 10px 22px #0000001a}.pj h3 .title-icon,.pj.featured h3 .title-icon{width:32px;height:32px;border-radius:7px;vertical-align:middle;margin-right:10px;object-fit:cover;display:inline-block;box-shadow:0 2px 6px #00000026}.pj h3 .title-text,.pj.featured h3 .title-text{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap;vertical-align:middle}.pj h3 .title-reading{font-family:Noto Sans JP,sans-serif;font-size:13px;font-weight:500;color:var(--text-3);letter-spacing:.02em;margin-left:2px}.pj .icon-tile.has-image{background:transparent;border:0;padding:0;overflow:hidden;border-radius:22%}.pj .icon-tile.has-image img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}.pj:not(.featured){min-height:248px;height:auto;overflow:visible}.pj h3{font-size:24px}.writing table{font-size:13px}.writing thead th{padding:5px 22px}.writing tbody td{padding:6px 22px}:root[data-theme=light] .stats,:root[data-theme=light] .approach,:root[data-theme=light] .ap-card,:root[data-theme=light] .lifecycle,:root[data-theme=light] .pj,:root[data-theme=light] .writing{background:var(--surface)}:root[data-theme=light] .ap-card,:root[data-theme=light] .pj{border-color:var(--line)}:root[data-theme=light] .stats,:root[data-theme=light] .approach,:root[data-theme=light] .ap-card,:root[data-theme=light] .lifecycle,:root[data-theme=light] .pj,:root[data-theme=light] .writing{background:#fffcf7db}:root[data-theme=light] .ap-card{background:#faf4ebe0}:root[data-theme=light] .ap-card.primary{background:#faf4ebe0}.writing-empty{padding:36px 0;text-align:center;color:var(--text-3);font-size:13px;line-height:1.7}.pj,.pj *,.pcard,.pcard *,.proj-featured,.proj-featured *,.link-row,.link-row *,.ext-card,.ext-card *,.related-row,.related-row *,.btn-block,.btn-block *,.side-link,.side-link *{cursor:pointer}
