.progress{z-index:60;background:linear-gradient(90deg, var(--ember-soft), var(--ember));width:0;height:3px;box-shadow:0 0 12px var(--ember);transition:width .1s linear;position:fixed;top:0;left:0}.art-head{padding:140px 0 0}@media (max-width:760px){.art-head{padding-top:120px}.breadcrumb{flex-wrap:wrap;row-gap:6px}}.breadcrumb{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);align-items:center;gap:10px;margin-bottom:36px;font-size:11px;display:flex}.breadcrumb a:hover{color:var(--fg)}.breadcrumb .sep{color:var(--ash)}.art-head .tags{flex-wrap:wrap;gap:8px;margin-bottom:28px;display:flex}.art-head .tags span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ember-soft);border:1px solid color-mix(in srgb, var(--ember) 40%, transparent);border-radius:999px;padding:6px 13px;font-size:10px}.art-head h1{font-family:var(--sans);letter-spacing:-.035em;text-wrap:balance;max-width:20ch;font-size:clamp(34px,5.2vw,68px);font-weight:500;line-height:1}.art-head h1 em{font-family:var(--display);background:linear-gradient(180deg, var(--ember-soft) 0%, var(--ember) 70%);color:#0000;-webkit-background-clip:text;background-clip:text;font-style:italic;font-weight:400}.art-head .standfirst{color:var(--fg-dim);text-wrap:pretty;max-width:62ch;margin-top:28px;font-size:clamp(17px,1.5vw,21px);line-height:1.5}.proj-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:24px;margin-top:40px;padding:24px 0;display:grid}@media (max-width:700px){.proj-meta{grid-template-columns:repeat(2,1fr)}}.proj-meta .m .k{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);margin-bottom:6px;font-size:10px}.proj-meta .m .v{color:var(--fg);font-size:15px;font-weight:500}.proj-meta .m .v a.link{color:var(--ember-soft);border-bottom:1px solid color-mix(in srgb, var(--ember) 50%, transparent)}.proj-meta .m .v a.link:hover{border-color:var(--ember-soft)}.art-hero{aspect-ratio:21/9;background:radial-gradient(70% 80% at 50% 115%, color-mix(in srgb, var(--ember-soft) 90%, white) 0%, var(--ember) 16%, var(--ember-deep) 40%, transparent 70%), linear-gradient(165deg, #1a1816 0%, #241410 45%, #4a160c 100%);border-radius:24px;justify-content:center;align-items:flex-end;margin:48px 0 64px;display:flex;position:relative;overflow:hidden}.art-hero.has-image{background:var(--bg-3);aspect-ratio:16/10;display:block}.art-hero .cap{font-family:var(--mono);color:#ffffffb3;letter-spacing:.06em;z-index:2;font-size:11px;position:absolute;top:24px;left:28px}.art-hero.has-image .cap{top:auto;bottom:24px}.art-hero .device{z-index:1;background:#f6f4ef;border-radius:14px 14px 0 0;width:78%;margin-bottom:-2%;position:relative;overflow:hidden;box-shadow:0 -30px 80px #0006}.art-hero .device .topbar{background:#e6e1d8;align-items:center;gap:6px;height:26px;padding:0 12px;display:flex}.art-hero .device .topbar i{background:#c2bcb1;border-radius:50%;width:9px;height:9px;display:inline-block}.art-hero .device .screen{aspect-ratio:16/7;flex-direction:column;gap:14px;padding:20px 28px;display:flex}.art-hero .device .row1{justify-content:space-between;align-items:center;display:flex}.art-hero .device .h{background:#222;border-radius:5px;width:45%;height:20px}.art-hero .device .badge{font-family:var(--mono);color:#fff;background:#222;border-radius:999px;padding:5px 10px;font-size:10px}.art-hero .device .cards{flex:1;grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.art-hero .device .card{background:#fff;border:1px solid #e6e1d8;border-radius:8px;flex-direction:column;justify-content:space-between;gap:8px;padding:12px;display:flex}.art-hero .device .card .cimg{background:linear-gradient(135deg,#ffd9a0,#ff8b3d);border-radius:5px;height:36px}.art-hero .device .card:nth-child(2) .cimg{background:linear-gradient(135deg,#c4d4ff,#5078ff)}.art-hero .device .card:nth-child(3) .cimg{background:linear-gradient(135deg,#cfead9,#3fae6e)}.art-hero .device .card:nth-child(4) .cimg{background:linear-gradient(135deg,#e6e1d8,#a89e8f)}.art-hero .device .card .cl{background:#ddd;border-radius:3px;width:70%;height:6px}.article{grid-template-columns:1fr minmax(0,720px) 1fr;gap:0;display:grid}.article>*{grid-column:2}.prose p{color:var(--fg-dim);text-wrap:pretty;margin:0 0 26px;font-size:18px;line-height:1.7}.prose p strong{color:var(--fg);font-weight:600}.prose h2{font-family:var(--sans);letter-spacing:-.025em;color:var(--fg);text-wrap:balance;margin:56px 0 22px;font-size:clamp(26px,3vw,36px);font-weight:500;line-height:1.1}.prose h2 .idx{font-family:var(--mono);color:var(--ember);letter-spacing:.1em;margin-bottom:10px;font-size:13px;font-weight:500;display:block}.prose h3{font-family:var(--sans);letter-spacing:-.02em;color:var(--fg);margin:40px 0 16px;font-size:22px;font-weight:500}.prose ul{flex-direction:column;gap:12px;margin:0 0 26px;padding:0;list-style:none;display:flex}.prose li{color:var(--fg-dim);padding-left:21px;font-size:17px;line-height:1.55;position:relative}.prose li:before{content:"";background:var(--ember);border-radius:50%;width:7px;height:7px;position:absolute;top:.55em;left:0;box-shadow:0 0 8px #ff280e80}.prose a.link,.prose a{color:var(--ember-soft);border-bottom:1px solid color-mix(in srgb, var(--ember) 50%, transparent)}.prose a.link:hover,.prose a:hover{border-color:var(--ember-soft)}.pullquote{border-left:2px solid var(--ember);margin:48px 0;padding:8px 0 8px 32px}.pullquote p{font-family:var(--display);color:var(--fg);margin:0;font-size:clamp(24px,2.8vw,34px);font-style:italic;font-weight:400;line-height:1.25}.stat-band{background:var(--line);border:1px solid var(--line);border-radius:18px;grid-template-columns:repeat(3,1fr);gap:1px;margin:48px 0;display:grid;overflow:hidden}@media (max-width:600px){.stat-band{grid-template-columns:1fr}}.stat-band .s{background:var(--bg-2);padding:28px 24px}.stat-band .s .v{font-family:var(--display);background:linear-gradient(180deg, var(--ember-soft), var(--ember-deep));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:48px;font-style:italic;line-height:1}.stat-band .s .l{color:var(--fg-dim);margin-top:10px;font-size:13px;line-height:1.4}.callout{border:1px solid var(--line-strong);background:var(--bg-2);border-radius:16px;align-items:flex-start;gap:18px;margin:40px 0;padding:24px 28px;display:flex}.callout .ic{border:1px solid var(--line-strong);width:38px;height:38px;color:var(--ember-soft);border-radius:10px;flex:none;justify-content:center;align-items:center;display:flex}.callout .t b{color:var(--fg);margin-bottom:6px;font-size:15px;font-weight:600;display:block}.callout .t p{color:var(--fg-dim);margin:0;font-size:15px;line-height:1.55}.tech-tags{flex-wrap:wrap;gap:10px;margin:24px 0 8px;display:flex}.tech-tags span{font-family:var(--mono);letter-spacing:.04em;color:var(--fg-dim);border:1px solid var(--line-strong);border-radius:999px;padding:8px 14px;font-size:12px}.article-end{border-top:1px solid var(--line);grid-column:2;align-items:flex-start;gap:20px;margin-top:64px;padding-top:40px;display:flex}.article-end .av{background:radial-gradient(circle at 30% 30%,#ffe0b4,#ffa64a 60%,#6b3008 100%);border-radius:50%;flex:none;width:64px;height:64px}.article-end .bio strong{font-size:17px;font-weight:500;display:block}.article-end .bio .role{font-family:var(--mono);color:var(--fg-mute);margin:2px 0 12px;font-size:12px}.article-end .bio p{color:var(--fg-dim);max-width:54ch;font-size:15px;line-height:1.55}.related{margin-top:96px;margin-bottom:96px}.related .sec-label{margin-bottom:28px}.rel-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}@media (max-width:880px){.rel-grid{grid-template-columns:1fr}}.rel{border:1px solid var(--line);background:var(--bg-2);border-radius:18px;flex-direction:column;transition:transform .3s,border-color .3s;display:flex;overflow:hidden}.rel:hover{border-color:var(--line-strong);transform:translateY(-4px)}.rel .art{aspect-ratio:16/9;background:linear-gradient(150deg,#1a1816,#241410 60%,#3a2410);position:relative;overflow:hidden}.rel.r2 .art{background:linear-gradient(150deg,#161a18,#10221c 60%,#0c3a2c)}.rel.r3 .art{background:linear-gradient(150deg,#16181f,#101a30 60%,#0c2050)}.rel .art .glow{background:var(--ember);height:3px;box-shadow:0 0 20px 5px var(--ember);filter:blur(.5px);position:absolute;bottom:24%;left:10%;right:10%}.rel.r2 .art .glow{background:#16a34a;box-shadow:0 0 20px 5px #16a34a}.rel.r3 .art .glow{background:#5078ff;box-shadow:0 0 20px 5px #5078ff}.rel .body{flex-direction:column;gap:10px;padding:20px;display:flex}.rel .meta{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);font-size:10px}.rel h4{font-family:var(--sans);letter-spacing:-.02em;text-wrap:balance;font-size:18px;font-weight:500;line-height:1.2}.post-cta{border:1px solid var(--line);isolation:isolate;text-align:center;background:var(--bg-2);border-radius:24px;margin-top:96px;padding:clamp(40px,5vw,64px);position:relative;overflow:hidden}.post-cta:after{content:"";z-index:0;pointer-events:none;background:radial-gradient(80% 100% at 50% 100%, color-mix(in srgb, var(--ember) 55%, transparent) 0%, transparent 65%);opacity:.45;height:55%;position:absolute;bottom:0;left:0;right:0}.post-cta>*{z-index:1;position:relative}.post-cta h3{font-family:var(--sans);letter-spacing:-.03em;text-wrap:balance;max-width:18ch;margin:0 auto 14px;font-size:clamp(26px,3.4vw,42px);font-weight:500;line-height:1.02}.post-cta h3 em{font-family:var(--display);color:var(--ember-soft);font-style:italic;font-weight:400}.post-cta p{color:var(--fg-dim);max-width:52ch;margin:0 auto 28px;font-size:16px}.post-cta .btn-primary .arr{transition:transform .2s;display:inline-block}.post-cta .btn-primary:hover .arr{transform:translate(2px,-2px)}
