*,:before,:after{box-sizing:border-box;border:0 solid}h1,h2,h3,p,ol,ul,dl,dd,figure{margin:0}h1,h2,h3{font-size:inherit;font-weight:inherit}ol,ul{padding:0;list-style:none}img,iframe,video{vertical-align:middle;display:block}img{max-width:100%;height:auto}button,input,textarea{font:inherit;color:inherit;background-color:#0000;background-image:none;margin:0;padding:0}button{cursor:pointer}a{color:inherit;text-decoration:inherit}:root{--bg:#fff;--fg:#000;--muted:#333;--visual:#d3d3d3;--faint:#f2f2f2;--comment:#00f;--linenr:brown;--title:#f0f;--type:#2e8b57;--search:#ff0;--pmenu:pink;--pmenu-sel:#bebebe;--error:red;--mono:"JetBrains Mono", "Nanum Gothic Coding", ui-monospace, Menlo, monospace;--sans:"Pretendard", -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Apple SD Gothic Neo", system-ui, sans-serif;--bar-h:50px;color-scheme:light}html{-webkit-text-size-adjust:100%;background:var(--bg);scroll-padding-top:56px}body{background:var(--bg);color:var(--fg);font-family:var(--sans);word-break:keep-all;overflow-wrap:anywhere;padding-bottom:var(--bar-h);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.75}a{color:var(--comment);text-underline-offset:3px}:focus-visible{outline:2px solid var(--title);outline-offset:2px}code,kbd{font-family:var(--mono)}kbd{text-align:center;min-width:1.7em;color:var(--fg);background:var(--bg);border:1px solid var(--fg);box-shadow:0 2px 0 var(--fg);vertical-align:.1em;border-radius:4px;padding:0 .4em;font-size:.9em;font-weight:700;line-height:1.6;display:inline-block}mark{background:var(--search);color:var(--fg);padding:0 4px}.line{display:block}.c-comment{color:var(--comment);font-family:var(--mono)}.c-statement,.c-linenr{color:var(--linenr);font-family:var(--mono);font-weight:700}.c-title{color:var(--title)}.btn{font-family:var(--mono);color:var(--fg);background:var(--bg);border:1px solid var(--fg);box-shadow:0 3px 0 var(--fg);cursor:pointer;border-radius:4px;align-items:center;gap:10px;padding:10px 18px;font-size:15px;font-weight:700;text-decoration:none;transition:transform 80ms,box-shadow 80ms;display:inline-flex}.btn:hover{background:var(--faint)}.btn:active{box-shadow:0 1px 0 var(--fg);transform:translateY(2px)}.btn-rev{color:var(--bg);background:var(--fg)}.btn-rev:hover{background:#222}.btn-sm{box-shadow:0 2px 0 var(--fg);padding:5px 12px;font-size:13px}.btn-lg{padding:16px 26px;font-size:19px}.btn:disabled{opacity:.4;cursor:default}.kbd-inv{color:var(--bg);border-color:var(--bg);box-shadow:none;background:0 0}.tabline{z-index:30;background:var(--fg);height:54px;font-family:var(--mono);align-items:stretch;padding-left:16px;font-size:14px;display:flex;position:sticky;top:0}.brand{color:var(--bg);align-items:center;gap:10px;padding-right:28px;font-size:17px;font-weight:800;text-decoration:none;display:flex}.brand img{object-fit:contain;background:var(--bg);border-radius:6px;width:30px;height:30px;padding:3px}.brand-name:after{content:"";vertical-align:-.15em;background:#90ee90;width:.55em;height:1.05em;margin-left:3px;display:inline-block}@media (prefers-reduced-motion:no-preference){.brand-name:after{animation:1.1s step-end infinite blink}}.tabs{scrollbar-width:none;align-items:flex-end;gap:2px;min-width:0;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{height:40px;color:var(--fg);background:var(--visual);white-space:nowrap;border-radius:5px 5px 0 0;align-items:center;gap:6px;padding:0 16px;text-decoration:none;display:flex}.tab-n{color:var(--linenr);font-weight:800}.tab:hover{background:#e6e6e6}.tab.active{background:var(--bg);font-weight:800}.tab-right{color:var(--bg);flex:none;align-items:center;gap:14px;margin-left:auto;padding:0 12px;display:flex}.langs{align-items:center;gap:2px;display:flex}.langs a{white-space:nowrap;color:var(--visual);padding:2px 7px;text-decoration:none}.langs a:hover{color:var(--bg);text-decoration:underline}.langs a[aria-current=true]{color:var(--fg);background:var(--bg);font-weight:800}.btn-tab{font-family:var(--mono);color:var(--fg);background:var(--search);border-radius:3px;padding:4px 12px;font-size:13px;font-weight:700;text-decoration:none}.btn-tab:hover{background:var(--bg)}main{max-width:1180px;margin:0 auto;padding:0 24px}.sec{padding:160px 0 0}.sec-title{letter-spacing:-.02em;margin:0 0 12px;font-size:clamp(30px,4vw,44px);font-weight:800;line-height:1.2}.sec-title .c-linenr{margin-right:4px}.lead{color:var(--muted);margin:0 0 36px;font-size:19px}.links{font-family:var(--mono);flex-wrap:wrap;gap:6px 20px;margin:0;font-size:14px;display:flex}.win{border:1px solid var(--fg);background:var(--bg)}.win-status{font-family:var(--mono);color:var(--bg);background:var(--fg);justify-content:space-between;padding:0 10px;font-size:13px;font-weight:700;line-height:24px;display:flex}.win-msg{min-height:26px;font-family:var(--mono);white-space:pre;padding:0 10px;font-size:13px;line-height:26px;overflow:hidden}.win-msg.err{color:var(--bg);background:var(--error)}.cur{background:var(--fg);color:var(--bg)}.cur-bar{box-shadow:inset 2px 0 0 var(--fg)}@media (prefers-reduced-motion:no-preference){.hero .cur{animation:1.1s step-end infinite blink}}@keyframes blink{50%{color:inherit;background:0 0}}.hero{margin-top:32px}.hero .win-body{display:flex}.hero-text{counter-reset:ln}.ln-row{counter-increment:ln;position:relative}.ln-row:before{content:counter(ln);text-align:right;width:44px;font-family:var(--mono);letter-spacing:0;font-size:14px;font-weight:400;line-height:inherit;color:var(--linenr);user-select:none;position:absolute;top:0;left:-60px}h1 .ln-row:before{line-height:1;top:.42em}.hero-text{min-width:0;padding:36px 24px 36px 72px}.hero-text .c-comment{margin:0 0 18px;font-size:15px}.hero h1{font-family:var(--mono);letter-spacing:-.03em;margin:0 0 36px;font-size:clamp(36px,6.4vw,76px);font-weight:800;line-height:1.18}.typed{min-height:1.18em;display:block}.hero .cur-bar{box-shadow:inset .08em 0 0 var(--fg);padding-right:.08em}.hero-actions{flex-wrap:wrap;gap:14px;margin-bottom:28px;display:flex}.facts{font-family:var(--mono);color:var(--type);flex-wrap:wrap;gap:8px 22px;margin:0;padding:0;font-size:14px;font-weight:700;list-style:none;display:flex}.facts li:before{content:"✓ "}.facts a{color:inherit}.hero .win-msg b{font-weight:800}.pg{max-width:820px;margin:72px auto 0}.pg-head{justify-content:space-between;align-items:flex-start;gap:16px;min-height:92px;margin-bottom:16px;display:flex}.pg-title{margin:0 0 6px;font-size:22px;font-weight:800}.pg-count{font-family:var(--mono);color:var(--linenr);margin-right:10px;font-size:15px;font-weight:700}.pg-body{margin:0;font-size:18px}.pg-body kbd.tap{cursor:pointer}.pg-success{color:var(--type);margin:6px 0 0;font-weight:700}.pg-dots{flex:none;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.pg-dots button{border:1px solid var(--fg);background:var(--bg);cursor:pointer;border-radius:50%;width:12px;height:12px;padding:0;display:block}.pg-dots .done button{background:var(--type);border-color:var(--type)}.pg-dots .now button{outline:2px solid var(--fg);outline-offset:2px}.code-chip{font-family:var(--mono);color:var(--bg);background:var(--fg);border:0;border-radius:3px;align-items:center;gap:12px;padding:4px 10px;font-size:15px;display:inline-flex}button.code-chip{cursor:pointer;margin-top:12px}.copy-label{color:var(--visual);font-size:12px}.pg-editor{cursor:text;position:relative}.pg-buf{min-height:230px;font-family:var(--mono);padding:14px 0;font-size:19px;line-height:1.6;overflow-x:auto}.pg-line{white-space:pre;display:flex}.pg-line .ln{text-align:right;width:44px;color:var(--linenr);user-select:none;flex:none;padding-right:14px}.pg-line.tilde{color:var(--comment);padding-left:10px;font-weight:700}.goal{background:var(--search);font-weight:800}.pg-buf .goal.cur{color:var(--search);background:var(--fg)}.pg:not(.focused) .pg-buf .cur{background:var(--visual);color:var(--fg)}.pg-input{opacity:0;resize:none;border:0;width:1px;height:1px;padding:0;font-size:16px;position:absolute;bottom:0;left:0}.pg-start{font-family:var(--mono);color:var(--bg);background:var(--fg);cursor:pointer;border:0;border-radius:3px;padding:6px 12px;font-size:13px;font-weight:700;position:absolute;top:12px;right:12px}.pg.started .pg-start{display:none}.kb{background:var(--faint);user-select:none;border-radius:10px;flex-direction:column;gap:6px;width:min(100%,600px);margin:28px auto 0;padding:12px;display:flex}.kb-row{gap:6px;display:flex}.kb-key{min-width:0;height:38px;font-family:var(--mono);color:var(--fg);background:var(--bg);cursor:pointer;border:1px solid #bdbdbd;border-radius:6px;flex:1 1 0;padding:0;font-size:13px;transition:transform 60ms,box-shadow 60ms,background 60ms;box-shadow:0 3px #bdbdbd}.kb-key.hint{background:var(--search);border-color:var(--fg);box-shadow:0 3px 0 var(--fg);font-weight:800}.kb-key:active,.kb-key.down{background:var(--visual);transform:translateY(3px);box-shadow:0 0 #0000}.pg-nav{justify-content:space-between;gap:8px;margin-top:16px;display:flex}.pg-nav button{font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:6px 4px;font-size:14px}.pg-nav button:hover{color:var(--fg);text-decoration:underline}.pg-nav button.ready{color:var(--bg);background:var(--fg);border-radius:3px;padding:6px 14px;text-decoration:none}.pg-nav button:disabled{visibility:hidden}.latest{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:32px;margin-top:160px;display:grid}.video-frame{aspect-ratio:16/9;border:1px solid var(--fg);background:#000;position:relative}.video-frame iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.kicker{font-family:var(--mono);margin:0 0 10px;font-size:14px}.latest h2{margin:0 0 12px;font-size:clamp(24px,2.6vw,32px);line-height:1.3}.latest p{color:var(--muted);margin:0 0 16px}.steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:32px 0 0;padding:0;list-style:none;display:grid}.step{border:1px solid var(--fg);padding:24px}.step-n{font-size:18px}.step h3{margin:16px 0 6px;font-size:22px}.step p{color:var(--muted);margin:0 0 4px}.step a{font-family:var(--mono);margin-top:12px;font-size:15px;display:inline-block}.event-list{border-top:1px solid var(--fg)}.event{border-bottom:1px solid var(--fg)}.event summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:6px 20px;padding:20px 4px;list-style:none;display:flex}.event summary::-webkit-details-marker{display:none}.event summary:hover{background:var(--faint)}.ev-year{font-family:var(--mono);color:var(--linenr);font-weight:700}.ev-name{font-size:24px;font-weight:800}.ev-meta{font-family:var(--mono);color:var(--muted);gap:14px;font-size:14px;display:flex}.ev-toggle{font-family:var(--mono);margin-left:auto;font-weight:700}.ev-toggle:before{content:"+"}.event[open] .ev-toggle:before{content:"−"}.ev-body{padding:0 4px 32px}.ev-date{font-family:var(--mono);color:var(--muted);margin:0 0 6px;font-size:14px}.ev-summary{max-width:62ch;margin:0 0 8px;font-size:18px}.ev-body .links{margin-bottom:28px}.talk-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:28px 20px;margin:0;padding:0;list-style:none;display:grid}.yt{aspect-ratio:16/9;border:1px solid var(--fg);cursor:pointer;background:#000;width:100%;padding:0;display:block;position:relative;overflow:hidden}.yt img{object-fit:cover;width:100%;height:100%;display:block}.yt-play{font-family:var(--mono);color:var(--bg);background:var(--fg);padding:1px 10px;font-size:13px;position:absolute;bottom:8px;left:8px}.yt:hover .yt-play{background:var(--error)}.talk iframe{aspect-ratio:16/9;border:1px solid var(--fg);width:100%;display:block}.talk-title{margin:10px 0 2px;font-size:15px;font-weight:700;line-height:1.45}.talk-speaker{color:var(--muted);margin:0;font-size:14px}.talk-tags{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.talk-tags li{background:var(--faint);border-radius:3px;padding:4px 10px;font-size:15px}.filters{flex-wrap:wrap;gap:8px;margin:28px 0 24px;display:flex}.filters button{font-family:var(--mono);color:var(--fg);background:var(--bg);border:1px solid var(--fg);cursor:pointer;border-radius:3px;padding:6px 12px;font-size:14px}.filters button span{color:var(--muted)}.filters button[aria-pressed=true]{color:var(--bg);background:var(--fg)}.filters button[aria-pressed=true] span{color:var(--visual)}.masonry{columns:4 230px;column-gap:10px}.shot{break-inside:avoid;background:var(--faint);margin-bottom:10px;display:block}.shot[hidden]{display:none}.shot img{width:100%;height:auto;display:block}.shot:hover img{outline:3px solid var(--search);outline-offset:-3px}.foot{padding:64px 0 40px}.tildes{font-family:var(--mono);color:var(--comment);margin:0 0 24px;font-weight:700;line-height:1.5}.bottom{z-index:40;font-family:var(--mono);background:var(--bg);font-size:13px;position:fixed;bottom:0;left:0;right:0}.statusline{height:22px;color:var(--bg);background:var(--fg);white-space:nowrap;font-weight:700;line-height:22px;display:flex;overflow:hidden}.mode{color:var(--fg);background:var(--visual);padding:0 10px}.mode[data-mode=INSERT]{background:#90ee90}.mode[data-mode=COMMAND]{background:var(--search)}.mode[data-mode=VISUAL]{background:var(--pmenu)}.sl-file{padding:0 10px}.sl-right{margin-left:auto;display:flex}.sl-right>span{padding:0 10px}.sl-keys{color:var(--visual);font-weight:400}.cmdline{align-items:center;height:28px;margin:0;padding:0 10px;display:flex}.cmd-hint{all:unset;cursor:pointer;width:100%;color:var(--fg);align-items:center;gap:8px;display:flex}.cmd-hint[hidden]{display:none}.cmd-hint kbd{font-size:12px;line-height:1.4}.cmd-hint.error{color:var(--bg);background:var(--error);margin:0 -6px;padding:0 6px}.hint-touch{display:none}@media (hover:none){.hint-key{display:none}.hint-touch{display:inline}}@media (prefers-reduced-motion:no-preference){.cmd-hint.nudge{animation:.9s ease-in-out 3 nudge}}@keyframes nudge{50%{background:var(--search)}}.cmd-wrap{width:100%;display:flex}.cmd-wrap[hidden]{display:none}.cmd-wrap input{min-width:0;font:inherit;color:var(--fg);background:0 0;border:0;outline:0;flex:1;font-size:16px}.wildmenu{background:var(--pmenu);min-width:240px;margin:0;padding:0;list-style:none;position:absolute;bottom:100%;left:10px;box-shadow:2px 2px #00000040}.wildmenu[hidden],.wildmenu li[hidden]{display:none}.wildmenu button{all:unset;box-sizing:border-box;cursor:pointer;gap:16px;width:100%;padding:4px 10px;display:flex}.wildmenu button:hover,.wildmenu button:focus-visible{background:var(--pmenu-sel)}.wildmenu b{min-width:8ch}.lightbox{background:#fffffff7;border:0;width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:0}.lightbox[open]{flex-direction:column;justify-content:center;align-items:center;display:flex}#lb-img{object-fit:contain;border:1px solid var(--fg);max-width:calc(100vw - 32px);max-height:calc(100vh - 110px)}.lb-cap{font-family:var(--mono);margin:12px 0 0;font-size:14px}#lb-pos{background:var(--search)}.lb-btn{min-width:44px;height:44px;font-family:var(--mono);background:var(--bg);border:1px solid var(--fg);box-shadow:0 3px 0 var(--fg);cursor:pointer;border-radius:4px;padding:0 12px;font-size:16px;font-weight:700;transition:transform 70ms,box-shadow 70ms,background 70ms;position:absolute}.lb-btn:active,.lb-btn.down{background:var(--visual);transform:translateY(3px);box-shadow:0 0 #0000}.lb-prev{top:50%;left:16px}.lb-next{top:50%;right:16px}.lb-close{top:16px;right:16px}@media (width<=900px){.latest,.steps{grid-template-columns:1fr}}@media (width<=640px){main{padding:0 16px}.hero{margin-top:16px}.hero-text{padding:24px 16px 24px 44px}.ln-row:before{width:28px;font-size:12px;left:-40px}.lead{font-size:17px}.tabline{height:46px;padding-left:10px;font-size:13px}.brand{padding-right:10px}.brand img{width:26px;height:26px}.tab{height:34px}.brand-name,.tab-n,.btn-tab,.sl-keys{display:none}.tab{padding:0 10px}.tab-right{padding:0 6px}.langs a{padding:2px 4px}.pg-buf{min-height:190px;font-size:15px}.pg-head{flex-direction:column-reverse;gap:8px}.kb{gap:5px;padding:8px}.kb-row{gap:4px}.kb-key{height:34px;font-size:11px}.pg-line .ln{width:32px;padding-right:8px}.ev-toggle{display:none}.masonry{columns:2}.sec{padding-top:112px}.latest{margin-top:112px}}.list-page{max-width:820px;margin:0 auto;padding-top:72px;padding-bottom:40px}.list-page .c-comment{margin:0 0 8px;font-size:14px}.signup-list{border-top:1px solid var(--fg);margin:0;padding:0;list-style:none}.signup-list li{border-bottom:1px solid var(--visual);align-items:center;gap:20px;padding:22px 4px;display:flex}.sl-n{text-align:right;width:2ch;font-family:var(--mono);color:var(--linenr);flex:none;font-weight:700}.sl-main{flex:1;min-width:0}.sl-name{margin:0;font-size:20px;font-weight:800}.sl-date{font-family:var(--mono);color:var(--muted);margin:2px 0 0;font-size:14px}.sl-link{font-family:var(--mono);flex-direction:column;flex:none;align-items:flex-end;font-size:15px;font-weight:700;display:flex}.sl-host{color:var(--muted);font-size:12px;font-weight:400}.sl-none{color:var(--muted);flex:none;font-size:14px}.back{margin-top:32px}@media (width<=640px){.signup-list li{flex-wrap:wrap;gap:6px 14px}.sl-link,.sl-none{align-items:flex-start;margin-left:calc(2ch + 14px)}}
