@font-face{font-family:D2Coding Hangul;src:url(https://cdn.jsdelivr.net/gh/wan2land/d2coding/fonts/d2coding-full.woff2)format("woff2");font-weight:400;font-display:swap;unicode-range:U+11??,U+3130-318F,U+A960-A97F,U+AC00-D7AF,U+D7B0-D7FF}:root,:root[data-theme=light]{--color-paper:#f7f9fc;--color-page:#edf1f6;--color-card:#fdfeff;--color-ink:#0d1321;--color-ink-2:#373d4b;--color-muted:#5e636f;--color-rule:#dadee5;--color-rule-2:#bfc4cd;--color-band:#0f3467;--color-band-2:#20477f;--color-band-rule:#4a6a97;--color-band-ink:#f1f5fc;--color-band-muted:#cedcef;--color-band-accent:#99d6ff;--color-accent:#1d60f7;--color-accent-2:#1447d3;--color-accent-soft:#e1ecff;--color-accent-ink:#fafcff;--color-code:#101622;--color-code-ink:#e1e5eb;--color-mark:#f0de99;--color-danger:#be2323;--glow-warm:#e2aa7c3d;--glow-cool:#428fba73;--glow-deep:#0a1f4780;--band-bg:radial-gradient(75% 70% at 0% 0%, var(--glow-warm), transparent 70%), radial-gradient(85% 80% at 100% 100%, var(--glow-cool), transparent 72%), radial-gradient(60% 60% at 100% 0%, var(--glow-deep), transparent 70%), var(--color-band);--color-groove-shade:#b8bec8;--color-groove-light:#fdfeff;--color-groove-soft:#77819329;--color-card-ring:#1d60f7d9;--color-card-glow:#1d60f773;--color-band-card-ring:#99d6fff2;--color-band-card-glow:#99d6ff66;--font-body:"Pretendard Variable", "Pretendard", ui-sans-serif, system-ui, sans-serif;--font-code:"JetBrains Mono", "D2Coding Hangul", ui-monospace, monospace;--code-comment:#989fab;--code-punct:#9fa5ae;--code-keyword:#7fb7ff;--code-param:#68d4e0;--code-string:#8bdcb1;--code-number:#f1bd73;--code-function:#9fdbf4;--code-prompt:#6dadff;--code-output:#afb4be;--color-code-rule:#f1f5fc14;--color-code-edge:#f1f5fc2e;--color-code-edge-2:#f1f5fc5c;--color-code-num:#6e7581}@supports (color:lab(0% 0 0)){:root,:root[data-theme=light]{--color-paper:lab(97.8996% -.215083 -1.49847);--color-page:lab(94.8669% -.326335 -3.00667);--color-card:lab(99.5299% -.108749 -.749981);--color-ink:lab(6.01809% .610203 -10.4975);--color-ink-2:lab(25.625% -.111669 -9.22816);--color-muted:lab(41.9025% -.272438 -7.45925);--color-rule:lab(88.3632% -.399798 -3.75365);--color-rule-2:lab(79.067% -.534505 -5.24128);--color-band:lab(21.4462% 3.68647 -34.7728);--color-band-2:lab(29.6169% 2.2822 -36.6476);--color-band-rule:lab(43.9393% -2.30685 -28.1684);--color-band-ink:lab(96.4833% -.402182 -3.75502);--color-band-muted:lab(87.1677% -2.21413 -10.892);--color-band-accent:lab(82.613% -13.3766 -31.8155);--color-accent:lab(44.7877% 26.0733 -82.5422);--color-accent-2:lab(35.3874% 28.8944 -77.462);--color-accent-soft:lab(92.8873% -.916123 -13.0231);--color-accent-ink:lab(98.8248% -.144869 -1.50961);--color-code:lab(7.0769% .310712 -9.02114);--color-code-ink:lab(90.6832% -.400513 -3.75406);--color-mark:lab(88.8282% -.628203 36.3802);--color-danger:lab(42.4236% 59.8149 41.9956);--glow-warm:lab(74.2018% 17.2965 32.0792/.24);--glow-cool:lab(55.9845% -14.3684 -30.1984/.45);--glow-deep:lab(12.2125% 5.23452 -28.1298/.5);--color-groove-shade:lab(76.7387% -.596762 -5.98247);--color-groove-light:lab(99.5268% -.162303 -1.12442);--color-groove-soft:lab(53.4694% -.841737 -11.0855/.16);--color-card-ring:lab(44.7877% 26.0733 -82.5422/.85);--color-card-glow:lab(44.7877% 26.0733 -82.5422/.45);--color-band-card-ring:lab(82.613% -13.3766 -31.8155/.95);--color-band-card-glow:lab(82.613% -13.3766 -31.8155/.4);--code-comment:lab(65.1204% -.693679 -7.45137);--code-punct:lab(67.4623% -.555575 -5.60657);--code-keyword:lab(72.6649% -3.07232 -45.6375);--code-param:lab(78.8374% -29.8549 -15.8873);--code-string:lab(81.6158% -32.6799 12.9143);--code-number:lab(80.2679% 13.1301 44.7871);--code-function:lab(84.0706% -15.5147 -18.4859);--code-prompt:lab(68.9864% -1.74749 -52.3501);--code-output:lab(73.2626% -.561684 -5.60982);--color-code-rule:lab(96.4833% -.402182 -3.75502/.08);--color-code-edge:lab(96.4833% -.402182 -3.75502/.18);--color-code-edge-2:lab(96.4833% -.402182 -3.75502/.36);--color-code-num:lab(48.8779% -.64978 -7.43014)}}:root[data-theme=dark]{--color-paper:#090d16;--color-page:#060911;--color-card:#111622;--color-ink:#ebeff4;--color-ink-2:#c5cbd5;--color-muted:#989fab;--color-rule:#252b38;--color-rule-2:#3b4253;--color-band:#050f23;--color-band-2:#0d1e3e;--color-band-rule:#23334f;--color-band-ink:#f1f5fc;--color-band-muted:#b1bed8;--color-band-accent:#78b3ff;--color-accent:#5c9eff;--color-accent-2:#86baff;--color-accent-soft:#1b2c51;--color-accent-ink:#070e21;--color-code:#03060d;--color-code-ink:#e1e5eb;--color-mark:#665400;--color-danger:#f47b74;--glow-warm:#7c4a2d61;--glow-cool:#0f314680;--glow-deep:#00020a99;--band-bg:radial-gradient(90% 70% at 10% 105%, var(--glow-warm), transparent 70%), radial-gradient(70% 60% at 95% 0%, var(--glow-cool), transparent 70%), radial-gradient(60% 60% at 0% 0%, var(--glow-deep), transparent 70%), var(--color-band);--color-groove-shade:#010205;--color-groove-light:#272e3d;--color-groove-soft:#0001038c;--color-card-ring:#67a5ffd9;--color-card-glow:#5c9eff59;--color-band-card-ring:#78b3ffe6;--color-band-card-glow:#78b3ff59}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--color-paper:lab(3.62062% .22684 -5.34871);--color-page:lab(2.42346% .165835 -3.70228);--color-card:lab(7.07152% .443019 -9.03218);--color-ink:lab(94.1709% -.326276 -3.00659);--color-ink-2:lab(81.383% -.569105 -5.61374);--color-muted:lab(65.1204% -.693679 -7.45137);--color-rule:lab(17.4915% .165775 -9.19231);--color-rule-2:lab(27.9058% .129923 -11.0548);--color-band:lab(4.18213% 1.34932 -14.4321);--color-band-2:lab(11.2731% 3.07643 -22.9454);--color-band-rule:lab(20.7549% .667244 -19.6817);--color-band-ink:lab(96.4833% -.402182 -3.75502);--color-band-muted:lab(76.598% -.421584 -14.8633);--color-band-accent:lab(71.4135% -2.55215 -49.0102);--color-accent:lab(64.12% 1.48815 -56.0704);--color-accent-2:lab(73.8302% -3.17052 -45.6564);--color-accent-soft:lab(18.2287% 2.75479 -24.87);--color-accent-ink:lab(4.20068% 1.51157 -12.8335);--color-code:lab(1.51097% .219554 -3.16998);--color-code-ink:lab(90.6832% -.400513 -3.75406);--color-mark:lab(36.5008% 2.17608 50.2376);--color-danger:lab(66.0576% 46.9408 26.6951);--glow-warm:lab(36.9089% 19.5594 26.4613/.38);--glow-cool:lab(18.7555% -6.24262 -17.2498/.5);--glow-deep:lab(.602503% .395119 -3.24155/.6);--color-groove-shade:lab(.435322% .182733 -1.55919);--color-groove-light:lab(18.614% .331208 -10.9878);--color-groove-soft:lab(.176857% .153229 -.966767/.55);--color-card-ring:lab(66.569% .29999 -52.717/.85);--color-card-glow:lab(64.12% 1.48815 -56.0704/.35);--color-band-card-ring:lab(71.4135% -2.55215 -49.0102/.9);--color-band-card-glow:lab(71.4135% -2.55215 -49.0102/.35)}}:root,:root[data-theme=light],:root[data-theme=dark]{--bg:var(--color-paper);--surface-1:var(--color-card);--surface-2:var(--color-page);--surface-3:var(--color-rule);--border:var(--color-rule);--border-hover:var(--color-rule-2);--text-1:var(--color-ink);--text-2:var(--color-ink-2);--text-3:var(--color-muted);--accent:var(--color-accent);--accent-hover:var(--color-accent-2);--accent-muted:var(--color-accent-soft);--accent-glow:transparent;--shadow-1:none;--shadow-2:none;--shadow-glow:none;--font-sans:var(--font-body);--font-display:var(--font-body);--font-mono:var(--font-code);--site-width:1200px;--gut:clamp(16px, 4vw, 48px);--nav-height:72px;--nav-height-mobile:60px;--radius:10px}html,body{overflow-x:clip}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body)}h1,h2{overflow-wrap:break-word;text-wrap:balance;min-width:0}::selection{background:var(--color-accent-soft);color:var(--color-ink)}html{scrollbar-color:var(--color-rule-2) var(--color-page)}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.home-band a:focus-visible,.site-footer a:focus-visible,.article-band a:focus-visible{outline-color:var(--color-band-accent)}.wrap{width:100%;max-width:calc(var(--site-width) + 2 * var(--gut));padding-inline:var(--gut);margin-inline:auto}.nav-shell{height:var(--nav-height);background:var(--color-card);border-bottom:1px solid var(--color-rule);-webkit-backdrop-filter:none;padding-inline:max(var(--gut), calc((100% - var(--site-width)) / 2))}:root[data-theme=light] .nav-shell{background:var(--color-card)}.logo{color:var(--color-ink);gap:12px}.logo-mark{background:var(--color-accent);width:28px;height:28px;color:var(--color-accent-ink);border-radius:8px;place-items:center;font-size:15px;font-weight:800;display:grid}.brand-name{font-family:var(--font-body);letter-spacing:-.02em;color:var(--color-ink);font-size:21px;font-weight:800}.nav-divider{display:none}.nav-left{gap:40px}.nav-tabs{gap:32px}.nav-tab{color:var(--color-ink-2);white-space:nowrap;background:0 0;border-radius:0;padding:8px 0;font-size:16px;font-weight:400}.nav-tab:hover{color:var(--color-accent);background:0 0}.nav-right{gap:8px}.nav-search-hint{border:1px solid var(--color-rule-2);background:var(--color-page);min-width:200px;min-height:44px;color:var(--color-muted);border-radius:999px;padding:0 16px;font-size:15px}.nav-search-hint:hover{border-color:var(--color-muted);color:var(--color-ink-2)}.nav-search-hint kbd{border-color:var(--color-rule-2);background:var(--color-card);color:var(--color-muted);font-size:12px}.theme-icon-toggle{border-color:var(--color-rule-2);width:44px;height:44px;color:var(--color-ink-2);background:0 0;border-radius:999px}.theme-icon-toggle:hover{background:var(--color-page);color:var(--color-ink);border-color:var(--color-muted)}.nav-cta{border:1.5px solid var(--color-accent);min-height:44px;color:var(--color-accent);white-space:nowrap;border-radius:999px;align-items:center;padding:0 24px;font-size:16px;font-weight:600;text-decoration:none;transition:background-color .16s ease-out,color .16s ease-out;display:inline-flex}.nav-cta:hover,.nav-cta:active{background:var(--color-accent);color:var(--color-accent-ink)}.mobile-menu__panel{width:100%;box-shadow:none;background:var(--band-bg);color:var(--color-band-ink);padding-inline:var(--gut);border:0}.mobile-menu__nav{gap:8px}.mobile-menu__link{letter-spacing:-.02em;min-height:56px;color:var(--color-band-ink);border-radius:0;padding:8px 0;font-size:24px;font-weight:600}.mobile-menu__link:hover,.mobile-menu__link:active{color:var(--color-band-accent);background:0 0}.mobile-menu__footer{border-top-color:var(--color-band-rule)}.mobile-menu__footer .theme-icon-toggle{border-color:var(--color-band-rule);min-height:44px;color:var(--color-band-ink);background:0 0}.mobile-menu__theme{font-size:15px}html:root body.menu-open .nav-shell{z-index:60;background:0 0;border-bottom-color:#0000}html:root body.menu-open .nav-shell .brand-name{color:var(--color-band-ink)}html:root body.menu-open .nav-shell .nav-cta{border-color:var(--color-band-rule);color:var(--color-band-ink)}body.menu-open .nav-hamburger__line:before,body.menu-open .nav-hamburger__line:after{background:var(--color-band-ink)}@media (max-width:1080px){.nav-search-hint{display:none}}.case{aspect-ratio:16/9;border-radius:var(--radius);background:var(--color-band);width:100%;color:var(--color-band-ink);flex-direction:column;justify-content:space-between;padding:6% 7%;display:flex;position:relative;overflow:hidden;container-type:inline-size}.case__series{color:var(--color-band-muted);font-size:max(11px,4.4cqi);font-weight:600;line-height:1.2}.case__body{gap:2.4cqi;display:grid}.case__key{letter-spacing:-.035em;color:var(--color-band-ink);font-variant-numeric:tabular-nums;overflow-wrap:break-word;min-width:0;font-weight:800;line-height:1.04}.case__key--xl{font-size:17cqi}.case__key--l{font-size:12cqi}.case__key--m{font-size:8.6cqi;line-height:1.15}.case__key--s{font-size:7cqi;line-height:1.2}.case__sub{color:var(--color-band-muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:max(11px,4.6cqi);font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.case__foot{justify-content:space-between;align-items:center;display:flex}.case__bar{background:var(--color-band-accent);width:9cqi;height:max(2px,.8cqi)}.case__mark{letter-spacing:-.01em;font-size:max(9px,3.6cqi);font-weight:800}.case__mark b{color:var(--color-band-accent);font-weight:800}.home-band .case,.article-band .case{background:var(--color-band-2);color:var(--color-band-ink)}.card-grid,.posts-explorer__grid,.posts-explorer--grid .posts-explorer__grid{border:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px 32px;padding:0;display:grid}.posts-explorer__grid,.posts-explorer--grid .posts-explorer__grid{background:linear-gradient(to bottom, var(--color-groove-shade) 0 1px, var(--color-groove-light) 1px 2px, var(--color-groove-soft) 2px, transparent 10px) top / 100% 10px no-repeat;box-shadow:none;border-top:0;gap:0 56px;padding-top:2px}.posts-explorer__grid>.entry{border:0;padding:34px 0 42px;position:relative}.posts-explorer__grid>.entry>*{z-index:1;position:relative}.posts-explorer__grid>.entry:before{content:"";z-index:0;background:linear-gradient(to bottom, var(--color-groove-shade) 0 1px, var(--color-groove-light) 1px 2px, var(--color-groove-soft) 2px, transparent 10px);pointer-events:none;height:10px;position:absolute;bottom:-8px;left:-28px;right:-28px}.posts-explorer__grid>.entry:nth-child(3n+1):before{left:0}.posts-explorer__grid>.entry:nth-child(3n):before,.posts-explorer__grid>.entry:last-child:before{right:0}.posts-explorer__grid>.entry:not(:nth-child(3n)):after{content:"";z-index:0;background:linear-gradient(to right, var(--color-groove-shade) 0 1px, var(--color-groove-light) 1px 2px, var(--color-groove-soft) 2px, transparent 10px);pointer-events:none;width:10px;position:absolute;top:0;bottom:0;right:-37px}.entry{color:var(--color-ink);align-content:start;gap:16px;text-decoration:none;display:grid}.entry .case{outline-offset:0;outline:2px solid #0000;transition:outline-color .18s ease-out,box-shadow .22s ease-out}.entry:hover .case{outline-color:var(--color-card-ring);box-shadow:0 18px 44px -14px var(--color-card-glow)}.home-band .entry:hover .case{outline-color:var(--color-band-card-ring);box-shadow:0 18px 48px -12px var(--color-band-card-glow)}.entry__title{text-wrap:balance;letter-spacing:-.015em;margin:0;font-size:19px;font-weight:600;line-height:1.45;transition:color .16s ease-out}.entry:hover .entry__title{color:var(--color-accent)}.entry__meta{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:15px;display:flex}.entry__meta>*+*{border-left:1px solid var(--color-rule-2);padding-left:12px;line-height:1}.entry__lock{color:var(--color-ink-2);font-weight:600}.home-band .entry{color:var(--color-band-ink)}.home-band .entry:hover .entry__title{color:var(--color-band-accent)}.home-band .entry__meta{color:var(--color-band-muted)}.home-band .entry__meta>*+*{border-left-color:var(--color-band-rule)}.hi-post-card__highlight{background:var(--color-mark);color:inherit;border-radius:2px}.home-shell{min-height:0;display:block}.home-band{background:var(--band-bg);color:var(--color-band-ink)}.home-band>.wrap{padding-block:56px 80px}.home-band__title{letter-spacing:-.02em;color:var(--color-band-ink);margin:0 0 32px;font-size:28px;font-weight:800}.btn{background:var(--color-accent);min-height:48px;color:var(--color-accent-ink);white-space:nowrap;border-radius:999px;align-items:center;padding:0 24px;font-size:16px;font-weight:600;text-decoration:none;transition:background-color .16s ease-out;display:inline-flex}.btn:hover,.btn:active{background:var(--color-accent-2)}.home-band .btn{background:var(--color-band-accent);color:var(--color-band)}.home-band .btn:hover,.home-band .btn:active{background:var(--color-band-ink)}.home-sec{padding-top:136px}.home-sec--tint{background:var(--color-page);margin-top:136px;padding-block:96px}.home-sec--tint+.home-sec{padding-top:120px}.sec-head{justify-content:space-between;align-items:end;gap:24px;margin-bottom:40px;display:flex}.sec-head h2{letter-spacing:-.03em;color:var(--color-ink);font-size:42px;font-weight:800;line-height:1.2}.sec-head p{color:var(--color-muted);font-size:17px}.posts-explorer--grid{gap:0;max-width:none}.posts-explorer__controls,.posts-explorer--grid .posts-explorer__controls{box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column-reverse;align-items:stretch;gap:32px;margin-bottom:48px;padding:0;display:flex}.posts-explorer__search-row,.posts-explorer--grid .posts-explorer__search-row{justify-content:flex-end;max-width:none}.posts-explorer__search,.posts-explorer--grid .posts-explorer__search{width:min(360px,100%)}.posts-explorer__input,.posts-explorer--grid .posts-explorer__input,:root[data-theme=light] .posts-explorer__input{border:1px solid var(--color-muted);background:var(--color-card);min-height:48px;color:var(--color-ink);box-shadow:none;border-radius:999px;padding:0 20px;font-size:16px;font-weight:400}.posts-explorer__input:focus,:root[data-theme=light] .posts-explorer__input:focus{border-color:var(--color-accent);box-shadow:none;outline:2px solid var(--color-accent);outline-offset:2px}.posts-explorer__input::placeholder{color:var(--color-muted)}.posts-explorer__chips,.posts-explorer--grid .posts-explorer__chips{border-bottom:1px solid var(--color-rule);scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;gap:0;overflow-x:auto}.posts-explorer__chip{min-height:56px;color:var(--color-muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:1 0 auto;justify-content:center;gap:8px;margin-bottom:-1px;padding:0 20px;font-size:17px;font-weight:400;transition:color .16s ease-out}.posts-explorer__chip:hover{color:var(--color-ink);border-color:#0000}.posts-explorer__chip.is-active{color:var(--color-ink);border-color:#0000;border-bottom-color:var(--color-accent);background:0 0;font-weight:600}.posts-explorer__chip-label{font-weight:inherit}.posts-explorer__chip-count{min-width:0;color:var(--color-muted);background:0 0;border:0;border-radius:0;padding:0;font-size:15px;font-weight:400}.posts-explorer__chip.is-active .posts-explorer__chip-count{color:var(--color-accent)}.posts-explorer__pagination,.posts-explorer--grid .posts-explorer__pagination{border:0;gap:16px;margin-top:64px;padding:0}.posts-explorer__page-button{border:1.5px solid var(--color-ink);min-height:48px;color:var(--color-ink);letter-spacing:0;text-transform:none;background:0 0;border-radius:999px;padding:0 24px;font-size:16px;font-weight:600;transition:background-color .16s ease-out,color .16s ease-out}.posts-explorer__page-button:hover,.posts-explorer__page-button:active{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.posts-explorer__page-button:disabled,.posts-explorer__page-button:disabled:hover{opacity:.45;cursor:not-allowed;color:var(--color-ink);border-color:var(--color-ink);background:0 0}.posts-explorer__page-status{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:15px}.posts-explorer__empty{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-page);color:var(--color-ink-2);grid-column:1/-1;font-size:17px}.site-footer{background:var(--band-bg);color:var(--color-band-muted);border:0;margin-top:144px}.site-footer__inner{max-width:calc(var(--site-width) + 2 * var(--gut));padding:48px var(--gut);justify-content:space-between;align-items:center;margin-inline:auto;display:flex}.site-footer__name{font-family:var(--font-body);letter-spacing:-.02em;color:var(--color-band-ink);font-size:21px;font-weight:800}.site-footer__copy{color:var(--color-band-muted);font-size:15px}.site-footer__links{gap:28px;display:flex}.site-footer__link{color:var(--color-band-muted);letter-spacing:0;text-transform:none;font-size:15px;text-decoration:none}.site-footer__link:hover{color:var(--color-band-ink)}.article-reader+.site-footer,.article-reader~.site-footer{margin-top:0}.scroll-nav__btn{border-color:var(--color-rule-2);color:var(--color-ink-2);background:0 0;border-radius:999px}.scroll-nav__btn:hover{background:var(--color-page);border-color:var(--color-accent)}.tags-shell{max-width:calc(var(--site-width) + 2 * var(--gut));padding:72px var(--gut) 0;gap:56px}.tags-header{border-bottom:2px solid var(--color-ink);gap:12px;padding-bottom:32px}.tags-title{letter-spacing:-.03em;color:var(--color-ink);font-size:clamp(36px,4vw,52px);font-weight:800;line-height:1.15}.tags-subtitle{color:var(--color-muted);letter-spacing:0;text-transform:none;font-size:17px;font-weight:400}.tags-crumb{color:var(--color-muted);font-size:16px;text-decoration:none}.tags-crumb:hover{color:var(--color-accent)}.tags-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px}.tag-card{border:0;border-bottom:1px solid var(--color-rule);color:var(--color-ink);box-shadow:none;background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:8px 16px;padding:24px 0;text-decoration:none;transition:color .16s ease-out;display:grid}.tag-card:hover{color:var(--color-accent);border-color:var(--color-rule)}.tag-card__name{letter-spacing:-.02em;text-transform:none;font-size:24px;font-weight:800}.tag-card__count{color:var(--color-accent);font-variant-numeric:tabular-nums;border:0;border-radius:0;padding:0;font-size:24px;font-weight:800}.tag-card__latest{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:15px;overflow:hidden}.tags-empty{border-radius:var(--radius);background:var(--color-page);color:var(--color-ink-2)}.article-actions{gap:12px}.article-action,.article-action--home{border:1.5px solid var(--color-ink);min-height:48px;color:var(--color-ink);letter-spacing:0;text-transform:none;background:0 0;border-radius:999px;align-items:center;padding:0 24px;font-size:16px;font-weight:600;text-decoration:none;transition:background-color .16s ease-out,color .16s ease-out;display:inline-flex}.article-action:hover,.article-action:active{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}html:root[data-theme] .article-reader{--page-bg:var(--color-page);--card-bg:var(--color-card);--text-1:var(--color-ink);--text-2:var(--color-ink-2);--text-3:var(--color-muted);--border:var(--color-rule);--border-hover:var(--color-rule-2);--surface-2:var(--color-page);--accent:var(--color-accent);--accent-hover:var(--color-accent-2);--code-inline-bg:var(--color-accent-soft);--code-inline-fg:var(--color-accent-2);--codeblock-bg:var(--color-code);--codeblock-fg:var(--color-code-ink);--codeblock-border:transparent;--font-mono:var(--font-code)}html:root .article-reader .article-band{padding:64px var(--gut);background:var(--band-bg);color:var(--color-band-ink)}html:root .article-reader .article-band__inner{width:min(100%, var(--site-width));grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:48px;display:grid}html:root .article-reader .article-band .article-title{letter-spacing:-.03em;color:var(--color-band-ink);font-size:clamp(32px,3.4vw,46px);font-weight:800;line-height:1.2}html:root .article-reader .article-band .article-deck{color:var(--color-band-muted);font-size:18px}html:root .article-reader .article-band .article-meta{color:var(--color-band-muted);gap:8px 16px;font-size:17px;font-weight:400}html:root .article-reader .article-band .article-author{color:var(--color-band-ink);font-weight:600}html:root .article-reader .article-meta__avatar{background:var(--color-accent);color:var(--color-accent-ink);font-family:var(--font-body);font-weight:800}html:root .article-reader .meta-divider{background:var(--color-band-rule);height:14px}html:root .article-reader .article-meta__cat{color:var(--color-band-accent);font-weight:600;text-decoration:none}html:root .article-reader .article-meta__cat:hover{text-underline-offset:.2em;text-decoration:underline}html:root .article-reader .article-meta__lock{color:var(--color-band-ink);font-weight:600}html:root .article-reader .article-band .article-tag{background:var(--color-band-2);color:var(--color-band-muted);border-radius:999px;padding:4px 12px;font-size:15px}html:root .article-reader .article-band .article-tag:hover{background:var(--color-band-rule);color:var(--color-band-ink)}html:root .article-reader .article-band .case__key--xl{font-size:15cqi}html:root .article-reader .article-shell{-moz-column-gap:32px;column-gap:32px;padding-top:64px;padding-bottom:120px}html:root .article-reader .article-shell .article-content{border-radius:var(--radius) var(--radius) 0 0}html:root .article-reader .article-after{border-radius:0 0 var(--radius) var(--radius)}html:root .article-reader .article-shell .article-prose h2{letter-spacing:-.025em;font-size:30px;font-weight:800}html:root .article-reader .article-shell .article-prose h3{font-size:23px;font-weight:800}html:root .article-reader .article-shell .article-prose h4{font-weight:800}html:root .article-reader .article-shell .article-prose li::marker{color:var(--color-accent)}html:root .article-reader .article-shell .article-prose img{height:auto}html:root .article-reader .article-toc__title{color:var(--color-muted);font-size:15px;font-weight:600}html:root .article-reader .article-shell .article-toc__link{overflow-wrap:break-word;border-left:2px solid #0000;padding:8px 0 8px 12px;font-size:16px;font-weight:400}html:root .article-reader .article-shell .article-toc__item--level-3 .article-toc__link,html:root .article-reader .article-shell .article-toc__item--level-4 .article-toc__link{color:var(--color-muted);font-size:16px}html:root .article-reader .article-shell .article-toc__link:hover{color:var(--color-accent)}html:root .article-reader .article-shell .article-toc__link.is-active{color:var(--color-accent);border-left-color:var(--color-accent);font-weight:600}html:root .article-reader .article-recommendations h2{color:var(--color-muted);font-size:15px;font-weight:600}html:root .article-reader .article-recommendations__link{gap:8px;padding:16px 0;text-decoration:none;display:grid}html:root .article-reader .article-recommendations__link small{color:var(--color-muted);margin:0;font-size:15px;font-weight:400}html:root .article-reader .article-recommendations__link strong{color:var(--color-ink);font-size:16px;font-weight:600}html:root .article-reader .article-recommendations__link:hover strong{color:var(--color-accent)}html:root .article-reader .article-recommendations__all{font-size:15px;text-decoration:none}html:root .article-reader .article-related__title,html:root .article-reader .article-comments__title{letter-spacing:-.02em;text-transform:none;color:var(--color-ink);font-size:24px;font-weight:800}html:root .article-reader .article-related__subtitle,html:root .article-reader .article-comments__hint{color:var(--color-muted);letter-spacing:0;text-transform:none;font-size:15px}html:root .article-reader .article-related__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;display:grid}pre,code,kbd,samp{font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0}html:root .article-reader .article-shell .code-block{border-radius:var(--radius);background:var(--color-code);box-shadow:none;border:0;position:relative}html:root .article-reader .code-block .code-block__header{border-bottom:1px solid var(--color-code-rule);background:0 0;height:44px;padding:0 12px 0 20px}html:root .article-reader .article-shell .article-prose pre{background:var(--color-code);color:var(--color-code-ink);padding:16px 20px 20px;font-size:14px;line-height:1.7}html:root .article-reader .article-shell .article-prose pre.line-numbers{padding-left:4.2em}html:root .article-reader .article-prose .line-numbers-rows>span:before{color:var(--color-code-num)}html:root .article-reader .code-block .code-copy-button{border:1px solid var(--color-code-edge);height:32px;color:var(--color-code-ink);font-family:var(--font-body);letter-spacing:0;text-transform:none;opacity:.85;background:0 0;border-radius:999px;padding:0 12px;font-size:13px;font-weight:600}html:root .article-reader .code-block .code-copy-button:hover{opacity:1;border-color:var(--color-code-edge-2)}html:root .article-reader .code-block .code-copy-button[data-state=copied]{border-color:var(--code-string);color:var(--code-string);opacity:1}html:root .article-reader .code-block .code-block__label{font-family:var(--font-body);letter-spacing:0;text-transform:none;color:var(--color-code-ink);opacity:.6;font-size:13px;font-weight:600}html:root .article-reader .article-prose pre code .token.comment,html:root .article-reader .article-prose pre code .token.prolog,html:root .article-reader .article-prose pre code .token.doctype,html:root .article-reader .article-prose pre code .token.cdata{color:var(--code-comment);font-style:normal}html:root .article-reader .article-prose pre code .token.punctuation{color:var(--code-punct)}html:root .article-reader .article-prose pre code .token.keyword,html:root .article-reader .article-prose pre code .token.atrule,html:root .article-reader .article-prose pre code .token.method,html:root .article-reader .article-prose pre code .token.http-version,html:root .article-reader .article-prose pre code .token.selector{color:var(--code-keyword)}html:root .article-reader .article-prose pre code .token.parameter,html:root .article-reader .article-prose pre code .token.option,html:root .article-reader .article-prose pre code .token.header-name,html:root .article-reader .article-prose pre code .token.directive,html:root .article-reader .article-prose pre code .token.attr-name,html:root .article-reader .article-prose pre code .token.property,html:root .article-reader .article-prose pre code .token.tag{color:var(--code-param)}html:root .article-reader .article-prose pre code .token.string,html:root .article-reader .article-prose pre code .token.char,html:root .article-reader .article-prose pre code .token.attr-value,html:root .article-reader .article-prose pre code .token.url,html:root .article-reader .article-prose pre code .token.request-target,html:root .article-reader .article-prose pre code .token.header-value,html:root .article-reader .article-prose pre code .token.inserted,html:root .article-reader .article-prose pre code .token.regex{color:var(--code-string)}html:root .article-reader .article-prose pre code .token.number,html:root .article-reader .article-prose pre code .token.boolean,html:root .article-reader .article-prose pre code .token.constant,html:root .article-reader .article-prose pre code .token.symbol,html:root .article-reader .article-prose pre code .token.deleted,html:root .article-reader .article-prose pre code .token.important{color:var(--code-number)}html:root .article-reader .article-prose pre code .token.function,html:root .article-reader .article-prose pre code .token.class-name,html:root .article-reader .article-prose pre code .token.builtin{color:var(--code-function)}html:root .article-reader .article-prose pre code .token.operator,html:root .article-reader .article-prose pre code .token.entity,html:root .article-reader .article-prose pre code .token.variable{color:var(--color-code-ink)}html:root .article-reader .article-shell .code-block--terminal pre{padding-left:20px}.code-block--terminal .term-line--out{color:var(--code-output)}.code-block--terminal .term-line--meta{color:var(--code-comment)}.code-block--terminal .term-prompt{color:var(--code-prompt);-webkit-user-select:none;user-select:none;font-weight:600}.code-block--terminal .term-input{color:var(--color-code-ink);font-weight:600}html:root .article-reader .article-shell .code-block.is-collapsed pre{max-height:calc(51em + 36px);overflow:hidden}.code-block.is-collapsed:after{content:"";background:linear-gradient(transparent, var(--color-code));pointer-events:none;height:96px;position:absolute;bottom:44px;left:0;right:0}.code-block__more{border:0;border-top:1px solid var(--color-code-rule);background:var(--color-code);width:100%;min-height:44px;color:var(--code-prompt);font-family:var(--font-body);cursor:pointer;border-radius:0 0 var(--radius) var(--radius);font-size:15px;font-weight:600;display:block}.code-block__more:hover{color:var(--color-code-ink)}html:root .article-reader .secure-card{border-radius:var(--radius);background:var(--color-card);box-shadow:none;border:0;padding:56px}.secure-form{gap:12px;max-width:520px;display:grid}.secure-form__title{letter-spacing:-.02em;color:var(--color-ink);margin:0;font-size:26px;font-weight:800}.secure-form__desc{color:var(--color-ink-2);margin:0 0 12px;font-size:17px}.secure-form__label{color:var(--color-ink-2);font-size:15px;font-weight:600}.secure-form__row{gap:8px;display:flex}html:root .secure-form__input{border:1px solid var(--color-muted);border-radius:var(--radius);background:var(--color-card);min-width:0;min-height:48px;color:var(--color-ink);font-family:var(--font-body);box-shadow:none;flex:1;padding:0 16px;font-size:17px}html:root .secure-form__input:focus{border-color:var(--color-muted);box-shadow:none;outline:2px solid var(--color-accent);outline-offset:2px}html:root .secure-form__input[aria-invalid=true]{border-color:var(--color-danger)}html:root .secure-form__button{background:var(--color-accent);min-height:48px;color:var(--color-accent-ink);font-family:var(--font-body);white-space:nowrap;cursor:pointer;border:0;border-radius:999px;padding:0 24px;font-size:16px;font-weight:600;transition:background-color .16s ease-out}html:root .secure-form__button:hover,html:root .secure-form__button:active{background:var(--color-accent-2)}html:root .secure-form__button:disabled{opacity:.5;cursor:not-allowed}.secure-form__error{color:var(--color-danger);margin:4px 0 0;font-size:15px;font-weight:600}.lost{background:var(--band-bg);color:var(--color-band-ink)}.lost__inner{justify-items:start;gap:16px;padding-block:120px 136px;display:grid}.lost__code{letter-spacing:-.05em;color:var(--color-band-accent);font-variant-numeric:tabular-nums;margin:0;font-size:clamp(96px,14vw,180px);font-weight:800;line-height:.9}.lost h1{letter-spacing:-.03em;color:var(--color-band-ink);margin:16px 0 0;font-size:clamp(32px,4vw,48px);font-weight:800;line-height:1.2}.lost__desc{color:var(--color-band-muted);margin:0;font-size:18px}.lost__links{flex-wrap:wrap;align-items:center;gap:24px;margin-top:24px;display:flex}.lost .btn{background:var(--color-band-accent);color:var(--color-band)}.lost .btn:hover,.lost .btn:active{background:var(--color-band-ink)}.lost__link{color:var(--color-band-ink);text-decoration:underline;-webkit-text-decoration-color:var(--color-band-rule);text-decoration-color:var(--color-band-rule);text-underline-offset:.25em;font-size:16px;font-weight:600}.lost__link:hover{-webkit-text-decoration-color:var(--color-band-accent);text-decoration-color:var(--color-band-accent)}body:has(.lost) .site-footer{margin-top:0}@media (max-width:1099px){html:root .article-reader .article-band__inner{grid-template-columns:minmax(0,1fr);gap:32px;width:min(100%,768px)}}@media (max-width:960px){.card-grid,.posts-explorer__grid,.posts-explorer--grid .posts-explorer__grid{grid-template-columns:minmax(0,1fr)}.card-grid{gap:48px}.posts-explorer__grid,.posts-explorer--grid .posts-explorer__grid{gap:0}.posts-explorer__grid>.entry{padding:28px 0 32px}.posts-explorer__grid>.entry:before,.posts-explorer__grid>.entry:nth-child(n):before{left:0;right:0}.posts-explorer__grid>.entry:not(:nth-child(3n)):after{content:none}.home-band>.wrap{padding-block:48px 64px}.home-sec{padding-top:96px}.home-sec--tint{margin-top:96px;padding-block:64px}.home-sec--tint+.home-sec{padding-top:96px}.sec-head{flex-direction:column;align-items:start;gap:8px}.sec-head h2{font-size:32px}.posts-explorer__search,.posts-explorer--grid .posts-explorer__search{width:100%}.posts-explorer__chip{flex:none;padding:0 16px}.tags-grid{grid-template-columns:minmax(0,1fr)}.site-footer{margin-top:96px}.site-footer__inner{flex-direction:column;align-items:start;gap:20px}html:root .article-reader .article-related__grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:767px){.nav-shell{height:calc(var(--nav-height-mobile) + var(--safe-area-top))}.nav-cta{padding:0 16px;font-size:15px}.scroll-nav{display:none}html:root .article-reader .article-band .article-meta{gap:8px 12px;font-size:15px}html:root .article-reader .article-band .meta-divider,html:root .article-reader .article-band .article-meta__avatar,html:root .article-reader .article-band .article-author{display:none}html:root .article-reader .article-band .article-meta>:not(.meta-divider,.article-meta__avatar,.article-author)~:not(.meta-divider,.article-meta__avatar,.article-author){border-left:1px solid var(--color-band-rule);padding-left:12px;line-height:1}html:root .article-reader .article-band{padding:40px var(--gut)}html:root .article-reader .secure-card{padding:32px 20px}.secure-form__row{flex-direction:column}html:root .article-reader .article-band .article-title{font-size:28px}}@media (prefers-reduced-motion:reduce){.entry .case,.entry__title,.btn,.nav-cta,.posts-explorer__chip,.posts-explorer__page-button,.tag-card,.article-action{transition:none}}html:root .article-reader .article-toc__toggle{border:1px solid var(--color-rule-2);min-height:32px;color:var(--color-muted);font-family:var(--font-body);letter-spacing:0;text-transform:none;background:0 0;border-radius:999px;padding:0 12px;font-size:14px;font-weight:400}html:root .article-reader .article-toc__toggle:hover{color:var(--color-ink);border-color:var(--color-muted)}
