@font-face{font-family:Pretendard Variable;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/pretendard-subset.woff2) format("woff2-variations")}:root[data-theme=runbook]{--rb-paper: #ffffff;--rb-ink: #111111;--rb-text: #474747;--rb-label: #6b6b6b;--rb-line: #e3e3e3;--rb-grid: #efefef;--rb-face: #f0f0ee;--rb-lime: #d4f53c;--rb-lime-deep: #bfdf2a;--rb-lime-soft: #eefbb4;--rb-lime-tint: #f7fde0;--rb-stroke: 1.5px;--rb-sans: "Pretendard Variable", system-ui, -apple-system, "Apple SD Gothic Neo", sans-serif;--rb-mono: "JetBrains Mono Variable", "Pretendard Variable", ui-monospace, monospace;--ts-font: var(--rb-sans);--ts-fg: var(--rb-ink);--ts-muted: var(--rb-label);--ts-border: var(--rb-ink);--ts-accent: var(--rb-ink);--ts-panel-bg: #ffffff;--ts-panel-fg: var(--rb-ink);--ts-panel-muted: var(--rb-text);--ts-panel-line: var(--rb-line);--ts-panel-accent: var(--rb-ink);--ts-panel-radius: 12px;--viz-fg: #111111;--viz-body: #3a3a3a;--viz-muted: #555555;--viz-dim: #6b6b6b;--viz-line: #a9a9a9;--viz-faint: rgb(17 17 17 / .08);--viz-accent: #4a6200;--viz-accent-soft: rgb(212 245 60 / .45);--viz-ok: #4a6200;--viz-danger: #c0262d;--viz-danger-soft: rgb(192 38 45 / .1);--viz-warn: #a15c07;--viz-info: #1f5f8b;--viz-gray: #7a7a7a;--viz-flow: #1f5f8b;--viz-purple: #5b4b9a;--viz-surface: #ffffff;--viz-surface-2: #f4f4f2;--viz-caption: var(--rb-text);--viz-btn-line: var(--rb-ink);--viz-dot: #c4c4c4;--viz-font: var(--rb-sans);--viz-font-mono: var(--rb-mono);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{background:var(--rb-paper);scroll-behavior:smooth;scroll-padding-top:76px}body{margin:0;background:var(--rb-paper);color:var(--rb-ink);font:400 17px/1.75 var(--rb-sans);word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,figure,dl,dd{margin:0}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}a:hover{text-decoration-thickness:2px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--rb-ink);outline-offset:2px;box-shadow:0 0 0 5px var(--rb-lime)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.rb-mono{font-family:var(--rb-mono);font-variant-numeric:tabular-nums}:lang(ko) .rb-mono{font-family:var(--rb-mono)}.rb-wrap{width:100%;max-width:1228px;margin-inline:auto;padding-inline:24px}.rb-skip{position:fixed;left:16px;top:-64px;z-index:70;padding:8px 14px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;background:var(--rb-lime);font-size:15px;font-weight:600;text-decoration:none;transition:top .2s}.rb-skip:focus{top:12px}.rb-top{position:sticky;top:0;z-index:50;background:#fffffff0;border-bottom:1px solid transparent;transition:border-color .2s}.rb-top[data-scrolled]{border-bottom-color:var(--rb-ink)}.rb-top-in{display:flex;align-items:center;gap:20px;min-height:60px}.rb-logo{font-size:22px;font-weight:800;letter-spacing:-.04em;text-decoration:none;white-space:nowrap}.rb-logo span,.rb-h1 span,.rb-footer-name span{color:var(--rb-lime-deep)}.rb-nav{display:flex;gap:18px;margin-left:auto;font-size:15px;color:var(--rb-text)}.rb-nav a{text-decoration:none;white-space:nowrap}.rb-nav a:hover,.rb-nav a[aria-current=true]{color:var(--rb-ink);text-decoration:underline}.rb-tools{display:flex;align-items:center;gap:8px}.rb-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;background:var(--rb-lime);font-size:13px;font-weight:600;white-space:nowrap}.rb-badge i{width:7px;height:7px;border-radius:50%;background:var(--rb-ink)}.rb-lang{display:flex;overflow:hidden;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px}.rb-lang a{display:grid;place-items:center;min-width:36px;min-height:2.25rem;font:600 12px var(--rb-mono);text-decoration:none}.rb-lang a[aria-current=true]{background:var(--rb-ink);color:#fff}.rb-lang a:not([aria-current]):hover{background:var(--rb-lime)}.rb-tools .ts-btn{border-width:var(--rb-stroke);font-size:13px}.rb-tools .ts-btn:hover{background:var(--rb-lime)}.rb-pill,.rb-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:2.25rem;padding:0 14px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;background:#fff;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .2s ease,transform .2s ease}.rb-btn{min-height:42px;padding:0 18px;font-size:15px}.rb-btn-solid{background:var(--rb-ink);color:#fff}.rb-pill:hover,.rb-btn:hover{background:var(--rb-lime);color:var(--rb-ink);transform:translateY(-1px);text-decoration:none}.rb-btn:disabled{opacity:.32;cursor:default;transform:none;background:#fff}.rb-menu{display:none}@media(max-width:1080px){.rb-nav{display:none}.rb-tools{margin-left:auto}.rb-menu{display:inline-flex}.rb-nav[data-open]{position:absolute;top:100%;right:16px;display:grid;gap:0;min-width:200px;padding:6px 0;border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;background:#fff}.rb-nav[data-open] a{padding:10px 18px}}@media(max-width:640px){.rb-top-in{gap:8px}.rb-badge,.rb-pdf{display:none}.rb-logo{font-size:19px}.rb-wrap{padding-inline:16px}}.rb-eyebrow{font:500 11px var(--rb-mono);letter-spacing:.06em;color:var(--rb-label);text-transform:uppercase}.rb-h2{margin-top:6px;font-size:36px;font-weight:800;line-height:1.1;letter-spacing:-.035em}.rb-h2-xl{font-size:clamp(36px,5vw,52px)}.rb-h3s{margin:36px 0 12px;font-size:20px;font-weight:700;letter-spacing:-.02em}.rb-lead{max-width:40em;margin-top:16px;font-size:20px;line-height:1.6;color:var(--rb-text)}.rb-meta{font-size:12px;color:var(--rb-label)}.rb-note{margin-top:10px;font-size:11px;color:var(--rb-label)}.rb-caption{margin-top:8px;font-size:11px;color:var(--rb-label);text-align:right}.rb-link{font-size:14px;font-weight:600}.rb-sq li,.rb-sq-hollow li{position:relative;padding-left:18px}.rb-sq li:before,.rb-sq-hollow li:before{content:"";position:absolute;left:0;top:.68em;width:7px;height:7px;background:var(--rb-ink)}.rb-sq-hollow li:before{background:transparent;border:var(--rb-stroke) solid var(--rb-ink)}.rb-sq li+li,.rb-sq-hollow li+li{margin-top:4px}.rb-hero{display:grid;gap:40px;padding-top:48px;padding-bottom:32px}@media(min-width:961px){.rb-hero{grid-template-columns:5fr 7fr;gap:56px;padding-top:64px}}.rb-hero-l{display:grid;gap:24px;align-content:start}.rb-term,.rb-modal-bar{border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;background:#fff}.rb-term-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:var(--rb-stroke) solid var(--rb-ink)}.rb-dots{display:flex;gap:5px}.rb-dots i{width:9px;height:9px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:50%}.rb-term-file{font-size:11px;color:var(--rb-label)}.rb-status{margin-left:auto;padding:1px 9px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;background:var(--rb-lime);font:600 11px var(--rb-mono)}.rb-term-cmd,.rb-term-out{padding:0 14px;font-size:13px;line-height:1.9;white-space:pre-wrap}.rb-term-cmd{padding-top:10px}.rb-term-out{padding-bottom:12px;color:var(--rb-text)}[data-rb-typing]:after{content:"▌";animation:rb-blink 1s steps(1) infinite}@keyframes rb-blink{50%{opacity:0}}.rb-h1{font-size:clamp(48px,7vw,72px);font-weight:800;line-height:1;letter-spacing:-.05em}.rb-headline{font-size:20px;font-weight:500;line-height:1.5}.rb-profile{padding:18px 20px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;background:var(--rb-lime)}.rb-profile-top{display:flex;justify-content:space-between;font-size:11px}.rb-profile-role{margin-top:10px;font-size:clamp(24px,3vw,32px);font-weight:800;line-height:1.15;letter-spacing:-.035em}.rb-profile .rb-note{color:var(--rb-ink)}.rb-profile-sub{margin-top:6px;font-size:14px}.rb-bars,.rb-skillbars{display:grid;gap:8px;margin-top:14px;padding-top:12px;border-top:var(--rb-stroke) solid var(--rb-ink)}.rb-bars li,.rb-skillbars li{display:grid;grid-template-columns:7.5em 1fr 5em;align-items:center;gap:10px;font-size:14px}.rb-bars li>span:last-child,.rb-skillbars li>span:last-child{font-size:12px;text-align:right}.rb-bar{height:12px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;overflow:hidden;background:#fff}.rb-bar i{display:block;width:var(--w);height:100%;background:var(--rb-ink);transform-origin:left}.rb-bar .rb-bar-lime{background:var(--rb-lime);border-right:var(--rb-stroke) solid var(--rb-ink)}.rb-js .rb-bars[data-grow] .rb-bar i,.rb-js .rb-skillbars[data-grow] .rb-bar i{animation:rb-grow .7s cubic-bezier(.3,.1,.2,1) both;animation-delay:calc(var(--d, 0) * 1ms)}@keyframes rb-grow{0%{transform:scaleX(0)}}.rb-sky,.rb-building{display:block;width:100%;height:auto;overflow:visible}.rb-grid{fill:none;stroke:var(--rb-grid);stroke-width:1}.rb-slab{fill:none;stroke:var(--rb-ink);stroke-width:var(--rb-stroke)}.rb-face-t,.rb-face-l,.rb-face-r{stroke:var(--rb-ink);stroke-width:var(--rb-stroke);stroke-linejoin:round;transition:fill .35s ease}.rb-face-t{fill:#fff}.rb-face-l{fill:var(--rb-face)}.rb-face-r{fill:#fff}.rb-pillar{cursor:pointer;outline:none;transition:transform .25s}.rb-pillar:hover{transform:translateY(-4px)}.rb-pillar:focus-visible .rb-face-t{stroke-width:3px}.rb-pillar[data-active] .rb-face-t,.rb-pillar[data-active] .rb-face-r{fill:var(--rb-lime)}.rb-pillar[data-active] .rb-face-l{fill:var(--rb-lime-deep)}.rb-callout{opacity:0;transition:opacity .3s}.rb-callout[data-active]{opacity:1}.rb-callout circle{fill:var(--rb-ink)}.rb-callout path,.rb-leader{fill:none;stroke:var(--rb-ink);stroke-width:1.2}.rb-hero-r{position:relative}.rb-callouts{position:absolute;top:0;right:0;z-index:2;min-width:220px;padding:12px 16px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:8px;background:#fff}.rb-callout-box{display:grid;gap:2px;animation:rb-up .38s ease both}.rb-callout-box[hidden]{display:none}.rb-cl-name{font-size:22px;font-weight:800;letter-spacing:-.03em}.rb-callout-box dd{font-size:12px;color:var(--rb-text)}.rb-callout-box dd span{display:inline-block;min-width:5.5em;color:var(--rb-label)}.rb-sky{max-height:560px;margin-top:40px}.rb-floor[data-case] .rb-face-t,.rb-floor[data-case] .rb-face-r{fill:var(--rb-lime)}.rb-floor[data-case] .rb-face-l{fill:var(--rb-lime-deep)}.rb-floor-no{font:500 11px var(--rb-mono);fill:var(--rb-label)}.rb-floor:hover .rb-face-t,.rb-floor:hover .rb-face-r{fill:var(--rb-lime-soft)}.rb-about{display:grid;gap:24px;padding-bottom:96px}@media(min-width:961px){.rb-about{grid-template-columns:1fr 320px;gap:24px 56px}}.rb-about .rb-lead{margin-top:0}.rb-facts{border-top:var(--rb-stroke) solid var(--rb-ink)}.rb-facts>div{display:grid;grid-template-columns:72px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--rb-line);font-size:14px}.rb-facts dt{font-size:11px;line-height:2;color:var(--rb-label)}.rb-facts-wide>div{grid-template-columns:128px 1fr}.rb-hl{display:grid;gap:14px}@media(min-width:961px){.rb-hl{grid-column:1 / -1;grid-template-columns:repeat(3,1fr)}}.rb-hl li{display:grid;gap:4px;padding:20px 22px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:8px}.rb-hl span{font-size:15px;color:var(--rb-text)}.rb-film{border-top:var(--rb-stroke) solid var(--rb-ink)}.rb-stage{outline:none}.rb-film-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 24px;padding-top:28px;padding-bottom:16px}.rb-film-head .rb-eyebrow{width:100%}.rb-hint{font-size:14px;color:var(--rb-label)}.rb-rail,.rb-controls{display:none}.rb-scene{display:grid;gap:24px;padding-top:40px;padding-bottom:40px;border-top:1px solid var(--rb-line)}@media(min-width:961px){.rb-scene{grid-template-columns:5fr 7fr;gap:40px;align-items:center}}.rb-scene-l{display:grid;gap:8px;align-content:start}.rb-cmd{font-size:12px;color:var(--rb-text)}.rb-co{font-size:clamp(32px,4.4vw,52px);font-weight:800;line-height:1.12;letter-spacing:-.04em}.rb-role{font-size:18px;font-weight:600}.rb-stats{font-size:13px}.rb-stats b{font-size:15px}.rb-keyword{font-size:15px;color:var(--rb-text)}.rb-scene-hl{display:grid;gap:2px;margin-top:6px;font-size:14px;line-height:1.6}.rb-scene-hl li{padding:6px 0;border-bottom:1px solid var(--rb-line)}.rb-scene-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.rb-scene-r .rb-building{max-height:min(56vh,460px)}.rb-scene-r .rb-caption{text-align:center}.rb-film[data-mode=film]{height:calc(100svh + (var(--n) - 1) * 55svh)}.rb-film[data-mode=film] .rb-stage{position:sticky;top:0;display:grid;grid-template-rows:auto auto 1fr auto;height:100svh;padding-top:60px;overflow:hidden}.rb-film[data-mode=film] .rb-film-head{padding-top:18px;padding-bottom:10px}.rb-film[data-mode=film] .rb-rail{position:relative;display:block;height:64px;overflow:hidden;border-top:1px solid var(--rb-line);border-bottom:1px solid var(--rb-line)}.rb-rail-track{position:absolute;inset:0 auto 0 0;transition:transform 1.05s cubic-bezier(.65,0,.35,1);background-image:linear-gradient(90deg,var(--rb-line) 1px,transparent 1px);background-size:9px 8px;background-repeat:repeat-x;background-position:0 100%}.rb-year{position:absolute;bottom:8px;padding-left:4px;border-left:1px solid var(--rb-label);font:500 10px var(--rb-mono);color:var(--rb-label)}.rb-seg{position:absolute;top:26px;height:12px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:3px;background:#fff;transition:background 1s}.rb-seg b{position:absolute;bottom:14px;left:0;font-size:11px;font-weight:600;white-space:nowrap}.rb-seg[data-past]{background:var(--rb-ink)}.rb-seg[data-active]{background:var(--rb-lime)}.rb-now{position:absolute;top:0;bottom:0;left:30%;width:1.5px;background:var(--rb-ink)}.rb-now b{position:absolute;top:4px;right:6px;padding:0 6px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:999px;background:var(--rb-lime);font-size:11px;font-weight:600;white-space:nowrap}.rb-film[data-mode=film] .rb-scenes{position:relative;min-height:0}.rb-film[data-mode=film] .rb-scene{position:absolute;inset:0 0 0 50%;translate:-50% 0;padding-top:16px;padding-bottom:8px;border-top:0;visibility:hidden}.rb-film[data-mode=film] .rb-scene[data-active]{visibility:visible}.rb-film[data-mode=film] .rb-scene[data-leaving]{visibility:visible;animation:rb-leave .35s ease both}.rb-film[data-mode=film] .rb-scene[data-active] .rb-anim{animation:rb-up .5s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(.18s + var(--i) * .05s)}.rb-film[data-mode=film] .rb-scene[data-active] .rb-co{animation-name:rb-rise;animation-duration:.7s}.rb-film[data-mode=film] .rb-scene[data-active] .rb-floor{animation:rb-floor .45s ease both;animation-delay:calc(.25s + var(--k) * .05s)}.rb-film[data-mode=film] .rb-scenes{overflow:hidden}.rb-film[data-mode=film] .rb-scene-hl{max-height:10.5em;overflow:hidden;mask-image:linear-gradient(#000 70%,transparent)}@keyframes rb-up{0%{opacity:0;transform:translateY(12px)}}@keyframes rb-rise{0%{opacity:0;clip-path:inset(0 0 100% 0);transform:translateY(24px)}to{clip-path:inset(0 0 0 0)}}@keyframes rb-leave{to{opacity:0;transform:translate(calc(var(--dir, 1) * -28px))}}@keyframes rb-floor{0%{opacity:0;transform:translateY(-14px)}}.rb-sweep{position:absolute;top:0;bottom:0;left:0;z-index:5;width:4px;background:var(--rb-lime);border-inline:var(--rb-stroke) solid var(--rb-ink);opacity:0;pointer-events:none}.rb-sweep[data-run="1"]{animation:rb-sweep .75s cubic-bezier(.65,0,.35,1) both}.rb-sweep[data-run="-1"]{animation:rb-sweep .75s cubic-bezier(.65,0,.35,1) reverse both}@keyframes rb-sweep{0%{opacity:1;left:0}to{opacity:1;left:100%}}.rb-film[data-mode=film] .rb-controls{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding-top:10px;padding-bottom:14px}.rb-chips{display:flex;justify-content:center;gap:6px;overflow-x:auto;scrollbar-width:none}.rb-chip{min-height:36px;padding:0 12px;border:1px solid var(--rb-line);border-radius:999px;background:#fff;font-size:13px;white-space:nowrap;cursor:pointer}.rb-chip[aria-pressed=true]{border:var(--rb-stroke) solid var(--rb-ink);background:var(--rb-lime);font-weight:600}.rb-progress{grid-column:1 / -1;height:2px;background:var(--rb-line)}.rb-progress i{display:block;height:100%;background:var(--rb-ink);transform:scaleX(var(--p, .33));transform-origin:left;transition:transform .9s cubic-bezier(.65,0,.35,1)}@media(max-width:960px){.rb-film[data-mode=film] .rb-scene{align-content:start;gap:8px}.rb-film[data-mode=film] .rb-scene-r{order:-1}.rb-film[data-mode=film] .rb-scene-r .rb-building{max-height:20svh}.rb-film[data-mode=film] .rb-scene-r .rb-caption,.rb-film[data-mode=film] .rb-keyword,.rb-film[data-mode=film] .rb-hint{display:none}.rb-film[data-mode=film] .rb-co{font-size:30px}.rb-film[data-mode=film] .rb-scene-hl{max-height:6.8em;font-size:13px}.rb-film[data-mode=film] .rb-role{font-size:15px;line-height:1.5}.rb-film[data-mode=film] .rb-scene-btns .rb-btn{min-height:38px;padding:0 14px;font-size:13px}.rb-now{left:18%}.rb-film[data-mode=film] .rb-controls{grid-template-columns:1fr 1fr}.rb-film[data-mode=film] .rb-chips{grid-column:1 / -1;grid-row:2;justify-content:flex-start}}@media(max-width:640px){.rb-film[data-mode=film] .rb-scene-hl,.rb-film[data-mode=film] .rb-cmd{display:none}}@media(max-height:700px)and (max-width:960px){.rb-film[data-mode=film] .rb-scene-r{display:none}}.rb-modal{width:min(880px,calc(100% - 48px));max-height:calc(100dvh - 48px);margin:auto;padding:0;overflow:hidden;border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;background:#fff;color:var(--rb-ink)}.rb-modal[open]{display:flex;flex-direction:column;animation:rb-pop .45s cubic-bezier(.2,.8,.2,1)}.rb-modal::backdrop{background:#ffffffd1}@keyframes rb-pop{0%{opacity:0;transform:scale(.96)}}.rb-modal-bar{border:0;border-bottom:var(--rb-stroke) solid var(--rb-ink);border-radius:0}.rb-modal-bar .rb-pill{margin-left:auto}.rb-modal-body{padding:36px clamp(18px,6vw,56px) 56px;overflow-y:auto}.rb-modal-body .rb-facts{margin-top:20px}.rb-log-projects{display:grid;gap:0;border-top:1px solid var(--rb-line)}.rb-log-projects li{display:grid;grid-template-columns:52px 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--rb-line);font-size:15px}.rb-num{font:600 12px/2 var(--rb-mono)}.rb-num-lime{width:fit-content;padding:0 6px;background:var(--rb-lime);border:var(--rb-stroke) solid var(--rb-ink);border-radius:4px;line-height:1.7}@media(max-width:640px){.rb-modal{width:100%;max-width:100%;height:100dvh;max-height:100dvh;border:0;border-radius:0}}.rb-portfolio{padding-top:120px;border-top:var(--rb-stroke) solid var(--rb-ink)}@media(max-width:960px){.rb-pf-grid,.rb-case-body,.rb-hero,.rb-scene,.rb-sec{grid-template-columns:minmax(0,1fr)}}.rb-pf-rail{min-width:0}.rb-pf-grid{display:grid;gap:32px;margin-top:48px}@media(min-width:961px){.rb-pf-grid{grid-template-columns:170px 1fr;gap:48px}}.rb-pf-rail ul{display:flex;gap:6px;overflow-x:auto}.rb-pf-rail a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px;border-left:2px solid transparent;font-size:14px;text-decoration:none;white-space:nowrap;color:var(--rb-text)}.rb-pf-rail .rb-mono{font-size:11px}.rb-count{padding:0 7px;border:1px solid var(--rb-ink);border-radius:999px;font:600 11px var(--rb-mono)}.rb-pf-rail a[aria-current=true]{border-left-color:var(--rb-ink);font-weight:700;color:var(--rb-ink)}.rb-pf-rail a[aria-current=true] .rb-count{background:var(--rb-lime)}@media(min-width:961px){.rb-pf-rail ul{position:sticky;top:76px;display:grid;gap:2px}}.rb-group+.rb-group{margin-top:96px}.rb-group-name{margin-top:4px;font-size:36px;font-weight:800;letter-spacing:-.035em}.rb-case{margin-top:40px;padding:32px 0 48px;border-top:var(--rb-stroke) solid var(--rb-ink);scroll-margin-top:76px}.rb-tag-lime{margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--rb-lime);color:var(--rb-ink);font-weight:600}.rb-case-title{margin-top:8px;font-size:clamp(26px,3vw,36px);font-weight:800;line-height:1.25;letter-spacing:-.03em}.rb-meta-line{margin-top:6px;font-size:14px;color:var(--rb-text)}.rb-meta-line span{font-weight:700;color:var(--rb-ink)}.rb-oneline{margin-top:20px;padding:14px 18px;border:var(--rb-stroke) solid var(--rb-ink);border-left-width:6px;border-radius:4px 8px 8px 4px}.rb-oneline span{font-size:12px;color:var(--rb-label)}.rb-oneline p{font-size:17px;font-weight:600;line-height:1.6}.rb-case-body{display:grid;gap:28px;margin-top:28px}@media(min-width:961px){.rb-case-body{grid-template-columns:4fr 7fr;gap:40px;align-items:start}.rb-diagram{position:sticky;top:84px}.rb-js .rb-step{opacity:.4;transition:opacity .35s}.rb-js .rb-step[data-active]{opacity:1}}.rb-step+.rb-step{margin-top:22px}.rb-step-text{margin-top:6px;position:relative;padding-left:18px;font-size:16px;white-space:pre-line}.rb-step-text:before{content:"";position:absolute;left:0;top:.65em;width:7px;height:7px;background:var(--rb-ink)}.rb-step-text.rb-sq-hollow:before{background:transparent;border:var(--rb-stroke) solid var(--rb-ink)}.rb-learned{margin-top:22px;padding-top:14px;border-top:1px dashed #c4c4c4;font-size:15px;color:var(--rb-text)}.rb-learned span{font-weight:700;color:var(--rb-ink)}.rb-diagram{padding:12px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;background-color:#fff;background-image:linear-gradient(var(--rb-grid) 1px,transparent 1px),linear-gradient(90deg,var(--rb-grid) 1px,transparent 1px);background-size:24px 24px}.rb-legend{display:flex;gap:6px;margin-bottom:8px}.rb-legend span{padding:1px 10px;border:1px solid var(--rb-line);border-radius:999px;background:#fff;font-size:12px;transition:background .3s}.rb-legend span[data-active]{border:var(--rb-stroke) solid var(--rb-ink);background:var(--rb-lime);font-weight:600}.rb-tiles{display:grid;gap:10px;margin-top:28px}@media(min-width:641px){.rb-tiles{grid-template-columns:repeat(3,1fr)}}.rb-tiles li{display:grid;gap:4px;padding:16px 18px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:8px;background:var(--rb-lime)}.rb-tiles b{font-size:clamp(36px,4vw,52px);font-weight:800;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.rb-tiles .rb-mono{font-size:12px}.rb-techrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:18px}.rb-techrow>.rb-mono{margin-right:6px;font-size:12px;color:var(--rb-label)}.rb-techrow .rb-link{margin-left:auto}.rb-tag{padding:2px 9px;border:1px solid var(--rb-ink);border-radius:4px;font:500 12px var(--rb-mono);text-decoration:none}.rb-tag-link:hover{background:var(--rb-lime)}.rb-svc{border-top:var(--rb-stroke) solid var(--rb-ink)}.rb-svc li{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:14px 0;border-bottom:1px solid var(--rb-line);font-size:15px}@media(min-width:761px){.rb-svc li{grid-template-columns:180px 1fr auto}}.rb-svc-date{font-size:12px;line-height:2;color:var(--rb-label)}.rb-svc p{color:var(--rb-text)}.rb-meta-inline{font-size:13px;color:var(--rb-label)}.rb-svc .rb-link{display:grid;place-items:center;width:36px;height:36px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:50%;text-decoration:none}.rb-svc .rb-link:hover{background:var(--rb-lime)}.rb-more{margin-top:40px;font-size:15px;color:var(--rb-text)}.rb-more .rb-mono{margin-right:8px;font-size:12px;color:var(--rb-label)}.rb-sec{display:grid;gap:24px;padding-top:64px;padding-bottom:120px;border-top:var(--rb-stroke) solid var(--rb-ink)}@media(min-width:961px){.rb-sec{grid-template-columns:260px minmax(0,820px);gap:40px}}.rb-sec-body>.rb-lead:first-child{margin-top:0}.rb-core li{position:relative;display:grid;gap:2px;padding:12px 0 12px 26px;border-bottom:1px solid var(--rb-line)}.rb-core li:before{content:"";position:absolute;left:0;top:1.15em;width:12px;height:12px;border:var(--rb-stroke) solid var(--rb-ink);background:var(--rb-lime)}.rb-core span{font-size:15px;color:var(--rb-text)}.rb-skillbars li{grid-template-columns:9em 1fr 7em}.rb-skillbars{border-top:0}.rb-rec li{display:grid;gap:4px 20px;padding:14px 0;border-bottom:1px solid var(--rb-line)}@media(min-width:761px){.rb-rec li{grid-template-columns:180px 1fr}}.rb-rec .rb-mono{font-size:12px;line-height:2;color:var(--rb-label)}.rb-rec strong{font-size:17px;font-weight:600}.rb-rec p{font-size:14px;color:var(--rb-text)}.rb-rec .rb-expired strong{color:var(--rb-label);font-weight:500}.rb-fn-featured{display:grid;gap:16px;margin-top:28px}@media(min-width:761px){.rb-fn-featured{grid-template-columns:1fr 1fr}}.rb-fn-card{display:grid;gap:8px;align-content:start;padding:16px;border:var(--rb-stroke) solid var(--rb-ink);border-radius:12px;font-size:15px;scroll-margin-top:76px}.rb-fn-viz{padding:6px;border:1px solid var(--rb-line);border-radius:8px;background:#fff}.rb-fn-title{font-size:20px;font-weight:700;line-height:1.35;letter-spacing:-.02em}.rb-fn-metrics{width:fit-content;padding:0 8px;background:var(--rb-lime);font-size:13px;font-weight:600}.rb-fn-list{margin-top:28px;border-top:var(--rb-stroke) solid var(--rb-ink)}.rb-fn-list>li{border-bottom:1px solid var(--rb-line);scroll-margin-top:76px}.rb-fn-list summary{display:grid;grid-template-columns:52px 1fr;gap:2px 12px;padding:14px 0;cursor:pointer;list-style:none}.rb-fn-list summary::-webkit-details-marker{display:none}@media(min-width:761px){.rb-fn-list summary{grid-template-columns:52px 1fr 210px}}.rb-fn-id{font-size:12px;line-height:2.2}.rb-fn-name{font-weight:600}.rb-fn-list summary:hover .rb-fn-name{text-decoration:underline}.rb-fn-list details[open] .rb-fn-id{background:var(--rb-lime);width:fit-content}.rb-fn-meta{font-size:11px;line-height:2.4;color:var(--rb-label)}.rb-fn-body{display:grid;gap:10px;padding:0 0 20px 64px;font-size:15px;color:var(--rb-text)}@media(max-width:760px){.rb-fn-meta{grid-column:2}.rb-fn-body{padding-left:0}}.rb-letter p{max-width:40em;margin-top:16px;font-size:17px}.rb-letter .rb-letter-head{margin-top:0;font-size:26px;font-weight:700;line-height:1.4;letter-spacing:-.025em}.rb-letter-cta{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px!important}.rb-footer{padding:56px 0 40px;background:#111;color:#fff}.rb-footer-in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px}.rb-footer-name{font-size:40px;font-weight:800;letter-spacing:-.04em}.rb-footer-name span{color:var(--rb-lime)}.rb-footer-links{display:grid;gap:6px;font-size:15px}.rb-footer-links p:first-child{color:#bdbdbd}.rb-footer-row{display:flex;flex-wrap:wrap;gap:16px;margin-top:8px}.rb-footer a:hover{color:var(--rb-lime)}.rb-footer :focus-visible{outline-color:var(--rb-lime)}.rb-footer-note{margin-top:40px;font:500 11px var(--rb-mono);color:#a0a0a0}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
