:root{--paper:#f5f3ee;--surface:#fbfaf7;--sunken:#ebe7de;--line:#dcd8ce;--line-strong:#d3cec3;--muted:#57534a;--ink2:#3a3731;--ink:#1c1b18;--decor:#7c776a;--btn-line:#b9b4a8;--logo-dim:#847e72;--status:#4f6b3a;--visual:#e4e6dc;--visual-ink:#55604a;--code-bg:#262a24;--code-line:#3a4037;--code-ink:#e3e6dc;--code-meta:#b7bdae;--scroll-thumb:#b9b4a8;--scroll-thumb-hover:#8a8577;--code-scroll-thumb:#8b9381;--code-scroll-track:#30352d;--sans:"IBM Plex Sans KR",system-ui,-apple-system,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace;--script:"La Belle Aurore",cursive}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover);background-clip:padding-box;border:2px solid #0000}.codeblock pre{scrollbar-color:var(--code-scroll-thumb) var(--code-scroll-track)}.codeblock pre::-webkit-scrollbar-track{background:var(--code-scroll-track)}.codeblock pre::-webkit-scrollbar-thumb{background:var(--code-scroll-thumb);border:2px solid var(--code-scroll-track);background-clip:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{background:var(--paper);min-height:100vh;color:var(--ink);font-family:var(--sans);word-break:keep-all;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;flex-direction:column;margin:0;display:flex}a{color:inherit}button{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--ink);outline-offset:4px}[hidden]{display:none!important}.wrap{max-width:1040px;margin:0 auto;padding:0 32px}.hv-arr{opacity:0;white-space:nowrap;width:0;margin-left:0;transition:width .18s,opacity .18s,margin-left .18s;display:inline-block}a:hover>.hv-arr,a:focus-visible>.hv-arr{opacity:1;width:1em;margin-left:4px}.site-header{z-index:10;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:16px;height:64px;display:flex}.top-nav{align-items:center;gap:24px;font-size:14px;display:flex}.top-nav a{color:var(--muted);padding:12px 0;text-decoration:none}.top-nav a.active{color:var(--ink);text-underline-offset:8px;text-decoration:underline 1px}.theme-btn{width:44px;height:44px;color:var(--muted);opacity:.5;cursor:not-allowed;background:0 0;border:0;justify-content:center;align-items:center;margin-right:-12px;display:flex}.logo.wm{font-family:var(--script);white-space:nowrap;color:var(--ink);flex-shrink:0;align-items:baseline;font-size:30px;line-height:40px;text-decoration:none;display:inline-flex}.logo.wm .d{color:var(--logo-dim)}.logo.wm .mid{place-items:baseline start;transition:width .7s cubic-bezier(.4,0,.2,1);display:inline-grid;overflow:visible}.logo.wm .mid>span{opacity:0;filter:blur(2px);grid-area:1/1;transition:opacity .7s,filter .7s}.logo.wm .mid>span.on{opacity:1;filter:none}.logo.wm .v-caps{letter-spacing:.02em;padding:0 .03em 0 .04em;font-family:Noto Serif KR,serif;font-size:.83em;font-weight:600}.logo.wm .v-ko{padding:0 .04em 0 .06em;font-family:Gowun Batang,serif;font-size:.7em;font-weight:700}.logo.wm .v-script{margin:0 0 -.25em -.25em;padding:0 0 .25em .25em}.logo.wm .mid.no-anim,.logo.wm .mid.no-anim>span{transition:none}main{flex:1 0 auto;padding:64px 0 88px}main.tight{padding-top:40px;padding-bottom:96px}.back{color:var(--ink2);margin-bottom:24px;padding:10px 0;font-size:13px;text-decoration:none;display:inline-block}.back:hover{color:var(--ink)}.page-head{flex-direction:column;gap:14px;margin-bottom:48px;display:flex}.page-head h1{letter-spacing:-.015em;margin:0;font-size:36px;font-weight:600;line-height:1.35}.page-head p{max-width:560px;color:var(--ink2);margin:0;font-size:16px;line-height:1.75}.rail-label{color:var(--ink2);font-size:12px;font-weight:600}.chain{color:var(--ink);align-items:center;display:inline-flex}.chain i{background:currentColor;width:7px;height:7px;display:block}.chain b{background:currentColor;width:5px;height:1px;display:block}.chain.fixed{width:31px}.chain.sm i{width:6px;height:6px}.chain.sm b{width:4px}.tab .chain{color:inherit}.post{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:26px 0;text-decoration:none;display:flex}.post-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;display:flex}.post-meta .order{color:var(--ink);font-weight:600}.lvl{color:var(--ink2);align-items:center;gap:8px;display:inline-flex}.post h2{letter-spacing:-.01em;margin:0;font-size:21px;font-weight:600;line-height:1.5}.post p{max-width:600px;color:var(--ink2);margin:0;font-size:15px;line-height:1.7}.post:hover h2{text-underline-offset:5px;text-decoration:underline 1px}.off{color:var(--muted);cursor:default;text-decoration:line-through 1px}.codeblock{background:var(--code-bg);margin:32px 0 40px}.codeblock-head{border-bottom:1px solid var(--code-line);color:var(--code-meta);justify-content:space-between;align-items:center;gap:12px;padding:0 8px 0 16px;font-size:12px;display:flex}.codeblock-head span{font-family:var(--mono)}.copy{min-height:40px;color:var(--code-meta);cursor:pointer;background:0 0;border:0;padding:0 8px;font-size:12px}.copy:hover{color:var(--code-ink)}.codeblock code{font-size:inherit;background:0 0;padding:0}.codeblock pre{font-family:var(--mono);color:var(--code-ink);word-break:normal;overflow-wrap:normal;margin:0;padding:20px 16px;font-size:14px;line-height:1.7;overflow-x:auto}.note{background:var(--sunken);flex-direction:column;gap:4px;margin:32px 0;padding:18px 20px;font-size:15px;line-height:1.75;display:flex}.note b{color:var(--ink2);font-size:12px;font-weight:600}.toc{flex-direction:column;flex:200px;align-self:flex-start;gap:12px;min-width:0;max-width:240px;padding-top:4px;display:flex;position:sticky;top:96px}.toc nav{flex-direction:column;font-size:13px;line-height:1.5;display:flex}.toc nav a,.mobile-toc a{box-shadow:inset 1px 0 0 var(--line);color:var(--muted);padding:7px 0 7px 14px;text-decoration:none}.toc nav a.sub,.mobile-toc a.sub{padding-left:26px}.toc nav a.current,.mobile-toc a.current{box-shadow:inset 2px 0 0 var(--ink);color:var(--ink);font-weight:600}.toc .to-top{color:var(--muted);text-underline-offset:4px;align-self:flex-start;margin-top:8px;padding:6px 0;font-size:12px;text-decoration:none}.toc .to-top:hover,.toc .to-top:focus-visible{color:var(--ink);text-decoration:underline}.mobile-toc{border-bottom:1px solid var(--line);margin:0 0 32px;padding-bottom:12px;font-size:14px;display:none}.mobile-toc summary{cursor:pointer;color:var(--ink2);padding:10px 0}.mobile-toc nav{flex-direction:column;display:flex}.chain b.x,.chain i.x{width:0;transition:width .18s}.chain .s2{transition-delay:90ms}.btn-b{min-height:44px;color:var(--ink);align-self:flex-start;align-items:center;font-size:15px;font-weight:600;text-decoration:none;transition:transform 80ms;display:inline-flex}.btn-b .in{box-shadow:inset 0 -1px 0 var(--ink);align-items:center;gap:10px;padding-bottom:4px;transition:box-shadow .18s;display:inline-flex}.btn-b:hover .in,.btn-b:focus-visible .in{box-shadow:inset 0 -2px 0 var(--ink)}.btn-b:hover .chain b.x,.btn-b:focus-visible .chain b.x{width:5px}.btn-b:hover .chain i.x,.btn-b:focus-visible .chain i.x{width:7px}.btn-b.sec{color:var(--ink2);font-weight:400}.btn-b.sec .in{box-shadow:inset 0 -1px 0 var(--btn-line)}.btn-b.sec:hover,.btn-b.sec:focus-visible{color:var(--ink)}.btn-b.sec:hover .in,.btn-b.sec:focus-visible .in{box-shadow:inset 0 -1px 0 var(--ink)}.chain.hollow>i:first-child{background:0 0;transition:background .18s;box-shadow:inset 0 0 0 1px}.btn-b:hover .chain.hollow>i:first-child,.btn-b:focus-visible .chain.hollow>i:first-child{background:currentColor}.btn-b.sm{min-height:32px;color:var(--ink2);font-size:13px}.btn-b.sm .in{box-shadow:inset 0 -1px 0 var(--btn-line);gap:8px;padding-bottom:3px}.btn-b.sm:hover,.btn-b.sm:focus-visible{color:var(--ink)}.btn-b.sm:hover .in,.btn-b.sm:focus-visible .in{box-shadow:inset 0 -1px 0 var(--ink)}.btn-b:active{transform:translate(2px)}.chain.bm .arr{opacity:0;max-width:0;font-size:13px;font-style:normal;font-weight:400;line-height:1;font-family:var(--sans);margin-left:4px;transition:max-width .18s,opacity .18s;display:block;overflow:hidden;transform:translateY(-1px)}.btn-b.sm .chain.bm .arr{font-size:12px}.btn-b:hover .chain.bm .arr,.btn-b:focus-visible .chain.bm .arr{opacity:1;max-width:1em}.site-footer{background:var(--sunken)}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 32px;padding:20px 32px;display:flex}.footer-left{flex-wrap:wrap;align-items:center;gap:6px 20px;min-width:0;display:flex}.footer-mark{font-family:var(--script);flex:none;font-size:24px;line-height:1;text-decoration:none}.footer-mark span{color:var(--logo-dim)}.footer-notes{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;line-height:1.5;display:flex}.footer-links{flex-wrap:wrap;align-items:center;gap:4px 20px;font-size:13px;display:flex}.footer-links a{color:var(--ink2);padding:6px 0;text-decoration:none}.footer-links .off{padding:6px 0}.footer-links a:hover{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.footer-links .to-top-link{box-shadow:inset 1px 0 0 var(--line-strong);padding-left:20px}@media (width<=1000px){.toc{display:none}.mobile-toc{display:block}}@media (width<=600px){.wrap,.footer-inner{padding-left:20px;padding-right:20px}.header-inner{height:60px}.top-nav{gap:18px}.logo.wm{font-size:28px}main{padding:40px 0 64px}main.tight{padding-top:24px}.page-head{margin-bottom:36px}.page-head h1{font-size:28px}.post{padding:22px 0}.post h2{font-size:18px}.post p{font-size:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.logo.wm .mid,.logo.wm .mid>span,.hv-arr{transition:none}}.split{flex-wrap:wrap;align-items:flex-start;gap:48px 64px;display:flex}.split>.col-main{flex:999 560px;min-width:0}.split>.rail{flex:240px;min-width:0}@media (width>=960px){.split>.rail{align-self:flex-start;max-height:calc(100vh - 120px);position:sticky;top:96px;overflow:auto}}.start{flex-wrap:wrap;align-items:center;gap:0 14px;margin-top:6px;display:flex}.start .lead{color:var(--muted);font-size:14px}.start-link{min-height:44px;color:var(--ink2);align-items:center;font-size:15px;font-weight:600;text-decoration:none;transition:color .18s;display:inline-flex}.start-link .in{box-shadow:inset 0 -1px 0 var(--btn-line);align-items:center;gap:10px;padding-bottom:4px;transition:box-shadow .18s;display:inline-flex}.start-link .sq{background:0 0;flex:none;width:7px;height:7px;transition:background .18s;display:block;box-shadow:inset 0 0 0 1px}.start-link:hover,.start-link:focus-visible{color:var(--ink)}.start-link:hover .in,.start-link:focus-visible .in{box-shadow:inset 0 -2px 0 var(--ink)}.start-link:hover .sq,.start-link:focus-visible .sq{background:currentColor}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px 28px;display:flex}.tab{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:10px 0 12px;font-size:14px;display:flex}.tab:hover{color:var(--ink2)}.tab[aria-pressed=true]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--ink)}.tab .count{color:var(--muted);font-size:12px}.list-note{color:var(--muted);justify-content:space-between;gap:16px;padding:16px 0 0;font-size:13px;line-height:1.6;display:flex}.list-note span:last-child{white-space:nowrap}.guide{flex-direction:column;gap:20px;display:flex}.guide-item{flex-direction:column;gap:6px;text-decoration:none;display:flex}.guide-item .head{align-items:center;gap:10px;font-size:14px;font-weight:600;display:flex}.guide-item p{color:var(--ink2);margin:0;font-size:13px;line-height:1.65}.guide-item:hover .head span:last-child{text-underline-offset:4px;text-decoration:underline}.guide-note{border-top:1px solid var(--line);color:var(--muted);margin:0;padding-top:16px;font-size:13px;line-height:1.65}.rss{flex-direction:column;gap:8px;margin-top:36px;display:flex}.rss a,.rss .off{text-underline-offset:4px;align-self:flex-start;padding:4px 0;font-size:14px}.rss a{color:var(--ink2);text-decoration:none;transition:color .18s}.rss a:hover,.rss a:focus-visible{color:var(--ink);text-decoration:underline}.rss+.rss{margin-top:28px}@media (width<=600px){.tabs{gap:0 20px}}.article-grid{flex-wrap:wrap;align-items:flex-start;gap:64px;display:flex}.article-grid article{flex:999 560px;min-width:0;max-width:680px}.article-top{flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:16px;font-size:13px;display:flex}.article-top .pos{color:var(--muted)}.article-top .pos strong{color:var(--ink);font-weight:600}.article-grid h1{letter-spacing:-.015em;margin:0 0 16px;font-size:36px;font-weight:600;line-height:1.4}.article-desc{color:var(--ink2);margin:0 0 20px;font-size:18px;line-height:1.7}.article-meta{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 16px;margin-bottom:36px;padding-bottom:24px;font-size:13px;display:flex}.article-meta a{color:var(--ink2);text-underline-offset:3px}.prose{font-size:17px;line-height:1.85}.prose p{margin:0 0 24px}.prose h2{letter-spacing:-.01em;margin:56px 0 16px;font-size:24px;font-weight:600;line-height:1.5}.prose h3{margin:40px 0 12px;font-size:19px;font-weight:600;line-height:1.55}.prose :not(pre)>code{font-family:var(--mono);background:var(--sunken);padding:2px 6px;font-size:.88em}.disclaimer{box-shadow:inset 0 0 0 1px var(--line);color:var(--ink2);margin:40px 0 0;padding:16px 20px;font-size:14px;line-height:1.7}.series{border-top:1px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:64px;padding-top:24px;display:grid}.series a{flex-direction:column;gap:6px;padding:8px 0;text-decoration:none;display:flex}.series small{color:var(--muted);font-size:12px}.series span{font-size:17px;font-weight:600;line-height:1.5}.series a:hover span{text-underline-offset:5px;text-decoration:underline 1px}.series .next{text-align:right}@media (width<=600px){.article-grid h1{font-size:28px}.article-desc,.prose{font-size:16px}.prose h2{font-size:21px}.series{grid-template-columns:1fr}.series .next{text-align:left}}.proj-list{border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.proj-row{cursor:pointer;flex-wrap:wrap;gap:24px 40px;padding:32px 0;display:flex;position:relative}.proj-row .visual{transition:filter .15s}.proj-row:hover .visual{filter:brightness(.97)}.proj-body h2 a{text-decoration:none}.proj-body h2 a:after{content:"";position:absolute;inset:0}.proj-row:hover h2 a,.proj-body h2 a:focus-visible{text-underline-offset:6px;text-decoration:underline 1px}.proj-body h2 a:focus-visible{outline:none}.proj-row:has(h2 a:focus-visible){outline:2px solid var(--ink);outline-offset:4px}.proj-row .actions{z-index:1;position:relative}.visual{background:var(--visual);color:var(--visual-ink);aspect-ratio:4/3;justify-content:center;align-items:center;font-size:13px;display:flex}.proj-row .visual{flex:0 320px;min-width:240px}.proj-body{flex-direction:column;flex:360px;gap:12px;min-width:0;display:flex}.status{color:var(--ink2);align-items:center;gap:8px;font-size:13px;display:flex}.status i{border-radius:50%;flex:none;width:7px;height:7px}.status[data-s=plan] i{box-shadow:inset 0 0 0 1.5px var(--muted)}.status[data-s=dev] i{background:var(--status)}.status[data-s=live] i{background:var(--status);box-shadow:0 0 0 3px #4f6b3a33}.status[data-s=done] i{background:var(--ink)}.status[data-s=paused]{color:var(--muted)}.status[data-s=paused] i{background:var(--muted);border-radius:0;width:7px;height:1.5px}.proj-body h2{letter-spacing:-.02em;margin:0;font-size:32px;font-weight:600;line-height:1.2}.proj-body p{max-width:480px;color:var(--ink2);margin:0;font-size:16px;line-height:1.75}.proj-body dl{flex-wrap:wrap;gap:8px 32px;margin:8px 0 0;font-size:13px;display:flex}.proj-body dl div{gap:8px;display:flex}.proj-body dt{color:var(--muted)}.proj-body dd{margin:0}.hero{flex-wrap:wrap;align-items:center;gap:32px 48px;margin-bottom:32px;display:flex}.hero-copy{flex-direction:column;flex:380px;justify-content:center;gap:12px;min-width:0;display:flex}.hero-copy h1{letter-spacing:-.03em;margin:0;font-size:48px;font-weight:600;line-height:1.1}.hero-copy .lead{letter-spacing:-.01em;margin:0;font-size:20px;line-height:1.5}.hero-copy .sum{max-width:420px;color:var(--ink2);margin:0;font-size:15px;line-height:1.75}.actions{flex-wrap:wrap;align-items:center;gap:8px 28px;margin-top:8px;display:flex}.hero figure{flex:0 400px;min-width:0;margin:0}.hero .visual{aspect-ratio:16/10}.facts{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0 0 8px;display:grid}.facts div{flex-direction:column;gap:6px;padding:14px 16px 14px 0;display:flex}.facts dt{color:var(--muted);font-size:12px}.facts dd{margin:0;font-size:15px}.proj-sec{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:12px 40px;padding:28px 0;display:flex}.proj-sec:last-child{border-bottom:0;padding-bottom:0}.proj-sec>h2{flex:0 0 160px;margin:0;font-size:16px;font-weight:600;line-height:1.6}.proj-sec .body{min-width:0;max-width:640px;color:var(--ink2);flex-direction:column;flex:400px;gap:20px;font-size:16px;line-height:1.85;display:flex}.proj-sec .body p{margin:0}.flow{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.flow li{gap:16px;display:flex}.flow .rl{flex-direction:column;flex:0 0 9px;align-items:center;display:flex}.flow .rl i{background:var(--ink);flex:none;width:9px;height:9px;margin-top:8px}.flow .rl b{background:var(--line-strong);flex:1;width:1px;margin-top:6px}.flow li:last-child .rl b{display:none}.flow .st{min-width:0;padding-bottom:20px}.flow li:last-child .st{padding-bottom:0}.flow strong{color:var(--ink);font-size:15px;font-weight:600;line-height:1.65;display:block}.flow small{font-family:var(--mono);color:var(--muted);margin-right:8px;font-size:11px;font-weight:400}.flow .ds{color:var(--ink2);margin-top:2px;font-size:13.5px;line-height:1.7;display:block}.records{flex-direction:column;flex:400px;min-width:0;display:flex}.records .post{padding-top:0}.records .post h2{font-size:19px}.d-grid{flex-wrap:wrap;align-items:flex-start;gap:64px;margin-top:8px;display:flex}.d-main{flex:999 560px;min-width:0;max-width:760px}.d-grid .toc{max-height:calc(100vh - 120px);overflow:auto}.d-sec{border-bottom:1px solid var(--line);flex-direction:column;gap:20px;padding:40px 0;display:flex}.d-sec:last-child{border-bottom:0}.d-sec>h2{letter-spacing:-.01em;color:var(--ink);margin:0;font-size:22px;font-weight:600;line-height:1.4}.d-body{color:var(--ink2);flex-direction:column;gap:20px;font-size:16px;line-height:1.85;display:flex}.d-body p{margin:0}.d-body .d-h3{border-top:1px solid var(--line);color:var(--ink);margin:0;padding-top:24px;font-size:18px;font-weight:600;line-height:1.5}.d-body .d-h3:first-child{border-top:0;padding-top:0}.d-kv{grid-template-columns:96px minmax(0,1fr);column-gap:24px;display:grid}.d-k{color:var(--ink);padding-top:3px;font-size:13px;font-weight:600;line-height:1.7}.d-kv-b{flex-direction:column;gap:14px;min-width:0;display:flex}.codeblock-head .path{font-family:var(--mono);padding:10px 0;display:inline-block}.d-body .d-list{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.d-body p code,.d-body li code,.d-table code,.d-body .note code{font-family:var(--mono);background:var(--sunken);padding:1px 5px;font-size:.86em}.d-body .codeblock{margin:0}.d-body .codeblock pre{font-size:13px}.codeblock-head a{color:var(--code-meta);font-family:var(--mono);padding:10px 0;text-decoration:none;display:inline-block}.codeblock-head a:hover{color:var(--code-ink)}.d-body .note{margin:0}.d-tw{overflow-x:auto}.d-table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.6}.d-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--ink);white-space:nowrap;padding:0 16px 8px 0;font-size:12px;font-weight:600}.d-table td{border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink2);padding:10px 16px 10px 0}.d-table td:first-child{color:var(--ink);min-width:120px;font-weight:600}.d-table a{text-underline-offset:3px;white-space:nowrap}.d-img{aspect-ratio:16/9;width:100%}.d-empty{color:var(--muted);margin:0;padding:20px 0;font-size:15px}.d-body.records .post{padding-top:0}.d-body.records .post h2{font-size:19px}@media (width<=600px){.d-sec>h2{font-size:20px}.hero-copy h1{font-size:40px}.hero figure{flex-basis:100%}.proj-body h2{font-size:26px}.proj-row .visual{flex-basis:100%}.d-kv{grid-template-columns:1fr;row-gap:4px}.d-k{padding-top:0}}.ab-intro{flex-direction:column;gap:12px;display:flex}.ab-cm{align-items:center;display:flex}.ab-cm i{background:var(--ink);width:9px;height:9px;display:block}.ab-cm b{background:var(--ink);width:6px;height:1px;display:block}.ab-cm b.dim{background:var(--btn-line)}.ab-cm i.hollow{box-shadow:inset 0 0 0 1px var(--logo-dim);background:0 0}.ab-row{flex-wrap:wrap;align-items:flex-end;gap:24px 48px;display:flex}.ab-text{flex-direction:column;flex:999 420px;gap:12px;min-width:0;display:flex}.ab-intro h1{letter-spacing:-.015em;margin:6px 0 0;font-size:24px;font-weight:600;line-height:1.4}.ab-intro p{max-width:600px;color:var(--ink2);margin:0;font-size:14px;line-height:1.8}.ab-contact{max-width:100%;box-shadow:inset 1px 0 0 var(--line);flex-direction:column;flex:none;gap:7px;margin:0;padding-left:20px;font-size:12.5px;display:flex}.ab-contact div{align-items:baseline;gap:12px;display:flex}.ab-contact dt{font-family:var(--mono);color:var(--muted);flex:0 0 44px;font-size:10.5px}.ab-contact dd{white-space:nowrap;flex-wrap:nowrap;align-items:baseline;gap:2px 12px;min-width:0;margin:0;display:flex}.ab-contact a{color:inherit;text-underline-offset:3px;text-decoration:none}.ab-contact a:hover,.ab-contact a:focus-visible{color:var(--ink);text-decoration:underline}.ab-mail{font-family:var(--mono);user-select:all;font-size:12px}.ab-copy{min-height:28px;color:var(--muted);text-decoration:underline;text-decoration-color:var(--btn-line);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-size:11.5px}.ab-copy:hover{color:var(--ink)}.ab-ph{color:var(--muted)}.ab-label{color:var(--ink2);margin:0;font-size:12px;font-weight:600}.ab-featwrap{flex-direction:column;gap:10px;margin-top:28px;display:flex}.ab-feats{border-top:1px solid var(--ink);flex-wrap:wrap;gap:14px 32px;padding-top:12px;display:flex}.ab-feat{flex-direction:column;flex:200px;gap:3px;min-width:0;text-decoration:none;display:flex}.ab-feat strong{font-size:14px;font-weight:600}.ab-feat span{color:var(--ink2);font-size:12.5px;line-height:1.6}.ab-feat:hover strong{text-underline-offset:4px;text-decoration:underline 1px}.ab-lower{flex-wrap:wrap;align-items:flex-start;gap:40px 56px;margin-top:48px;display:flex}.ab-rail{flex:210px;min-width:0}.ab-main{flex-direction:column;flex:999 560px;gap:40px;min-width:0;display:flex}.ab-tl{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ab-tl li{gap:12px;display:flex}.ab-tl .rl{flex-direction:column;flex:none;align-items:center;width:9px;display:flex}.ab-tl .mk{background:var(--ink);flex:none;width:9px;height:9px;display:block}.ab-tl .mk.hollow{box-shadow:inset 0 0 0 1px var(--logo-dim);background:0 0}.ab-tl .ln{background:var(--ink);transform-origin:top;flex:1;width:1px;margin:4px 0;display:block}.ab-tl .ln.pend{background:var(--btn-line)}.ab-tl .bd{flex-direction:column;gap:2px;min-width:0;margin-top:-3px;padding-bottom:18px;display:flex}.ab-tl li:last-child .bd{padding-bottom:0}.ab-tl .lb{font-family:var(--mono);color:var(--muted);font-size:11px}.ab-tl .tx{font-size:12.5px;line-height:1.6}.ab-tl.play .mk{animation:.3s ease-out both abpop}.ab-tl.play .bd{animation:.52s ease-out both abfade}.ab-tl.play .ln{animation:.52s cubic-bezier(.4,0,.2,1) both abgrow}@keyframes abgrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes abpop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes abfade{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:none}}.ab-made-h{margin:0 0 6px;font-size:13px;font-weight:600}.ab-made-h span{color:var(--muted);margin-left:14px;font-size:12px;font-weight:400}.ab-made{margin:0;padding:0;list-style:none}.ab-made li{border-top:1px solid var(--line);flex-direction:column;gap:7px;padding:18px 0;display:flex}.ab-made .top{flex-wrap:wrap;align-items:baseline;gap:2px 14px;display:flex}.ab-made .nm{letter-spacing:-.01em;font-size:15px;font-weight:600;text-decoration:none}.ab-made a.nm:hover{text-underline-offset:4px;text-decoration:underline 1px}.ab-made .nm .ar{color:var(--muted);font-weight:400}.ab-made .ds{min-width:0;color:var(--ink2);flex:220px;font-size:13px;line-height:1.6}.ab-made .cx{color:var(--muted);white-space:nowrap;font-size:11.5px}.ab-made .bt{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 16px;display:flex}.ab-made .mt{flex-wrap:wrap;align-items:baseline;gap:2px 14px;display:inline-flex}.ab-made .rl{color:var(--ink2);font-size:12px}.ab-made .lk{color:var(--muted);font-size:11.5px;text-decoration:none}.ab-made li:hover .lk{color:var(--ink)}.ab-made .lk:hover,.ab-made .lk:focus-visible{text-underline-offset:3px;text-decoration:underline}.ab-made .pr{font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:11px}.ab-others{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ab-others li{flex-wrap:wrap;align-items:baseline;gap:0 10px;font-size:13px;line-height:1.6;display:flex}.ab-others strong{font-weight:600}.ab-others span{min-width:0;color:var(--ink2);flex:240px}@media (width<=600px){.ab-intro h1{font-size:21px}.ab-contact{box-shadow:none;padding-left:0}.ab-made .cx{white-space:normal}}@media (prefers-reduced-motion:reduce){.ab-tl.play .ln,.ab-tl.play .mk,.ab-tl.play .bd{animation:none}}.bk{--bk-hover-lift:-6px;--bk-hover-scale:1.03;--bk-hover-shadow:0 14px 26px #1c1b1847;--bk-hover-speed:.18s;--bk-row-gap:56px;--bk-year-gap:96px;--bk-overhang:22px;--bk-wood-top:#e4d8bf;--bk-wood-1:#d2bf9b;--bk-wood-2:#b8a27a;--bk-metal-1:#3b3933;--bk-metal-2:#23221e;--bk-danger:#9a3b2c;--bk-ease:cubic-bezier(.2,.8,.2,1);--bk-book-serif:"Gowun Batang","Noto Serif KR",serif}.bk .page-head{margin-bottom:32px}.bk button.btn-b{cursor:pointer;background:0 0;border:0;padding:0}.bk button.btn-b:disabled{cursor:progress;opacity:.6}.bk-owner-only{display:none!important}.bk[data-owner="1"] .bk-owner-only{display:flex!important}.bk[data-owner="1"] span.bk-owner-only{display:inline!important}.bk-text-btn{cursor:pointer;font:inherit;color:var(--ink2);text-decoration:underline;text-decoration-color:var(--btn-line);text-underline-offset:4px;background:0 0;border:0;padding:6px 0;font-size:13px}.bk-text-btn:hover{color:var(--ink);text-decoration-color:var(--ink)}.bk-danger{color:var(--bk-danger)}.bk-muted{color:var(--muted);font-size:13px}.bk-note{background:var(--sunken);color:var(--ink2);margin:0 0 16px;padding:12px 14px;font-size:13px;line-height:1.7}.bk-note code,.bk-export-list code{font-family:var(--mono);font-size:.92em}.bk-note.bk-warn{box-shadow:inset 2px 0 0 var(--bk-danger);color:var(--ink);background:0 0}.bk-hint{color:var(--muted);margin:16px 0 14px;font-size:13px;line-height:1.6}.bk[data-owner][data-group=all] .bk-only-year{display:none!important}.bk-empty{color:var(--muted);padding:48px 0}.bk-noscript{color:var(--ink2);margin:24px 0;padding-left:20px;font-size:14px;line-height:1.9}.bk-toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px 24px;display:flex}.bk-toolbar .bk-tabs{border-bottom:0}.bk-tools{flex-wrap:wrap;align-items:center;gap:4px 20px;padding-bottom:4px;display:flex}.bk-tool{align-items:center;gap:16px;display:flex}.bk[data-view=floor] .bk-tool-shelf,.bk[data-view=shelf] .bk-tool-floor{display:none}.bk-tools .btn-b{min-height:44px}.bk-tool-sep{background:var(--line-strong);width:1px;height:16px}.bk-count{color:var(--muted);font-size:13px}.bk-slider{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.bk-slider input{width:96px;accent-color:var(--ink)}.bk-toggle{cursor:pointer;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;padding:6px 0;font-size:13px;display:inline-flex}.bk-toggle:before{content:"";width:7px;height:7px;box-shadow:inset 0 0 0 1px}.bk-toggle[aria-pressed=true]{color:var(--ink)}.bk-toggle[aria-pressed=true]:before{background:currentColor}.bk-cov{background:var(--sunken);position:absolute;inset:0;overflow:hidden}.bk-cov img{object-fit:cover;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block;position:absolute;inset:0}.bk-cov .bk-base{filter:grayscale()blur(2.5px)contrast(.85)brightness(1.08);opacity:.55;transform:scale(1.06)}.bk-cov .bk-clear{clip-path:inset(calc(100% - var(--pp,0%)) 0 0 0);transition:clip-path 1.1s var(--bk-ease)}.bk-cov .bk-edge{height:1px;left:0;right:0;bottom:var(--pp,0%);background:var(--ink);opacity:.55;transition:bottom 1.1s var(--bk-ease),opacity .3s;position:absolute}.bk-cov[data-full="1"] .bk-edge,.bk-cov[data-zero="1"] .bk-edge{opacity:0}.bk-floor{background:var(--sunken);cursor:grab;user-select:none;touch-action:none;justify-content:center;align-items:center;height:clamp(440px,68vh,760px);display:flex;position:relative;overflow:hidden}.bk-floor.bk-dragging{cursor:grabbing}.bk-pan{perspective:1600px;will-change:transform;flex:none}.bk-pan.bk-smooth{transition:transform .6s var(--bk-ease)}.bk-plane{transition:transform .8s var(--bk-ease);transform-origin:50%;flex:none;position:relative}.bk-plane.bk-tilt{transform:rotateX(48deg)rotate(-8deg)scale(.95)}.bk-tile{cursor:inherit;transition:transform var(--bk-hover-speed) var(--bk-ease),box-shadow var(--bk-hover-speed);background:0 0;border:0;padding:0;position:absolute}.bk-tile:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 .5px #1c1b1859}.bk-floor:not(.bk-dragging) .bk-tile:hover,.bk-tile:focus-visible{z-index:3;transform:translateY(var(--bk-hover-lift)) scale(var(--bk-hover-scale));box-shadow:var(--bk-hover-shadow);outline:none}.bk-tile-label{text-align:left;color:var(--ink);background:var(--surface);box-shadow:inset 0 1px 0 var(--line);opacity:0;pointer-events:none;padding:7px 8px;font-size:12px;font-weight:600;line-height:1.35;transition:opacity .2s;position:absolute;bottom:0;left:0;right:0}.bk-tile-label small{font-family:var(--mono);color:var(--muted);font-size:11px;font-weight:400;display:block}.bk-floor:not(.bk-dragging) .bk-tile:hover .bk-tile-label,.bk-tile:focus-visible .bk-tile-label{opacity:1}.bk-tile.bk-out{visibility:hidden}.bk-tile.bk-new{z-index:3;animation:bk-new 1.6s var(--bk-ease)}@keyframes bk-new{0%{opacity:0;transform:scale(.6)}40%{opacity:1;box-shadow:0 0 0 2px var(--ink),0 14px 26px #1c1b1840;transform:scale(1.06)}to{box-shadow:none;transform:none}}.bk-shelf-wrap{padding-top:0}.bk-shelf-wrap .bk-hint{margin-bottom:28px}.bk-year{margin-bottom:var(--bk-year-gap)}.bk-year-head{border-bottom:1px solid var(--ink);flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-bottom:8px;padding-bottom:12px;display:flex}.bk-year-head h2{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600;line-height:1.4}.bk-year-head span{color:var(--muted);font-size:13px}.bk-year-head .bk-text-btn{margin-left:auto}.bk-row{margin:0 0 var(--bk-row-gap);position:relative}.bk-row-books{z-index:1;padding:36px var(--bk-overhang) 0;box-sizing:content-box;align-items:flex-end;margin-bottom:-5px;display:flex;position:relative}.bk-board{z-index:0;height:22px;position:relative}.bk-board-top{background:linear-gradient(180deg,#d9cbac,var(--bk-wood-top));clip-path:polygon(4px 0,calc(100% - 4px) 0,100% 100%,0 100%);height:7px;position:absolute;top:0;left:4px;right:4px}.bk-board-front{background:repeating-linear-gradient(90deg,#3c280a09 0 2px,transparent 2px 11px,#3c280a05 11px 12px,transparent 12px 23px),linear-gradient(180deg,var(--bk-wood-1),var(--bk-wood-2));height:15px;position:absolute;top:7px;left:0;right:0;box-shadow:inset 0 1px #ffffff59,inset 0 -1px #3c280a40,inset 3px 0 #3c280a1f,inset -3px 0 #3c280a1f}.bk-board:after{content:"";filter:blur(2px);background:linear-gradient(#1c1b1829,#1c1b1800);height:26px;position:absolute;top:100%;left:6px;right:6px}.bk-bracket{z-index:0;background:linear-gradient(90deg,var(--bk-metal-1),var(--bk-metal-2) 70%,#15140f);width:12px;height:44px;position:absolute;top:100%;box-shadow:3px 4px 6px #1c1b182e}.bk-bracket:before{content:"";background:var(--bk-metal-2);height:3px;position:absolute;top:0;left:-4px;right:-4px}.bk-bracket:after{content:"";clip-path:polygon(0 0,100% 0,0 100%);background:linear-gradient(#1c1b1824,#0000);width:10px;height:26px;position:absolute;top:3px;left:100%}.bk-bracket.bk-l{left:9%}.bk-bracket.bk-r{right:9%}.bk-bracket i{background:radial-gradient(circle at 35% 35%,#b5b0a4,#6a665d 70%);border-radius:50%;width:6px;height:6px;margin-left:-3px;position:absolute;left:50%;box-shadow:0 0 0 1px #00000059}.bk-bracket i:after{content:"";background:#0000008c;height:1px;margin-top:-.5px;position:absolute;top:50%;left:1px;right:1px;transform:rotate(-35deg)}.bk-bracket i:first-child{top:12px}.bk-bracket i:nth-child(2){top:30px}.bk-bracket i:nth-child(2):after{transform:rotate(20deg)}.bk-spine{cursor:pointer;width:var(--w);height:var(--h);margin-right:var(--gap);background:var(--c);color:var(--c-ink);transition:transform .22s var(--bk-ease);-webkit-touch-callout:none;user-select:none;border:0;flex:none;padding:0;position:relative;overflow:hidden;box-shadow:inset 1px 0 #ffffff29,inset -1px 0 #0003,2px 0 3px #1c1b181f}.bk-spine:before{content:"";opacity:.4;height:1px;box-shadow:0 calc(var(--h) * .82) 0 currentColor;background:currentColor;position:absolute;top:7%;left:0;right:0}.bk-spine:has(.bk-sp-img):before{display:none}.bk-spine:hover,.bk-spine:focus-visible{outline:none;transform:translateY(-10px)}.bk-spine:focus-visible{box-shadow:0 0 0 2px var(--ink)}.bk-sp-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.bk-sp-title{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--bk-book-serif);font-weight:700;font-size:clamp(8px,calc(var(--w) * .5),16px);white-space:nowrap;text-overflow:ellipsis;letter-spacing:.04em;max-height:64%;position:absolute;top:12%;left:50%;overflow:hidden;transform:translate(-50%)}.bk-sp-author{writing-mode:vertical-rl;font-size:clamp(7px,calc(var(--w) * .3),10px);opacity:.75;white-space:nowrap;max-height:18%;position:absolute;bottom:6%;left:50%;overflow:hidden;transform:translate(-50%)}.bk-sp-unread{height:calc(100% - var(--pp,0%));-webkit-backdrop-filter:grayscale()brightness(1.15)contrast(.75);pointer-events:none;background:#f5f3ee59;position:absolute;top:0;left:0;right:0}.bk-sp-unread:after{content:"";background:var(--ink);opacity:.6;height:1px;position:absolute;bottom:0;left:0;right:0}.bk-spine[data-full="1"] .bk-sp-unread,.bk-spine[data-zero="1"] .bk-sp-unread:after{display:none}.bk-shelf-cover{cursor:pointer;width:var(--w);height:var(--h);margin-right:var(--gap);transition:transform .22s var(--bk-ease);-webkit-touch-callout:none;user-select:none;background:0 0;border:0;flex:none;padding:0;position:relative;box-shadow:3px 2px 6px #1c1b182e}.bk-shelf-cover:hover,.bk-shelf-cover:focus-visible{outline:none;transform:translateY(-10px)}.bk-shelf-cover:focus-visible{box-shadow:0 0 0 2px var(--ink)}.bk-spine.bk-out,.bk-shelf-cover.bk-out{visibility:hidden}.bk-spine.bk-lifted,.bk-shelf-cover.bk-lifted{z-index:6;cursor:grabbing;transition:none;box-shadow:0 18px 30px #1c1b184d}body.bk-shelf-dragging,body.bk-shelf-dragging *{user-select:none;cursor:grabbing!important}html.bk-noscroll{overflow:hidden}.bk-detail{z-index:20;position:fixed;inset:0}.bk-detail-back{-webkit-backdrop-filter:blur(12px)saturate(.7);opacity:0;background:#f5f3eeb3;transition:opacity .45s;position:absolute;inset:0}.bk-detail.bk-open .bk-detail-back{opacity:1}.bk-detail-layout{pointer-events:none;justify-content:center;align-items:center;gap:clamp(24px,5vw,64px);padding:24px;display:flex;position:absolute;inset:0}.bk-slot{aspect-ratio:.68;flex:none;max-width:42vw;height:min(460px,62vh)}.bk-panel{pointer-events:auto;background:var(--surface);border:1px solid var(--line);opacity:0;width:min(380px,100%);max-height:calc(100vh - 48px);transition:opacity .35s ease,transform .45s var(--bk-ease);padding:24px 24px 18px;overflow:auto;transform:translate(12px)}.bk-detail.bk-open .bk-panel{opacity:1;transform:none}.bk-d-meta{color:var(--muted);margin:0 0 8px;font-size:12px}.bk-d-title{letter-spacing:-.015em;margin:0;font-size:24px;font-weight:600;line-height:1.35}.bk-d-author{color:var(--ink2);margin:6px 0 12px;font-size:14px}.bk-d-status{margin:0 0 10px}.bk-missing{flex-wrap:wrap;align-items:center;gap:4px 6px;margin-bottom:8px;font-size:11px;display:flex}.bk-missing:empty{display:none}.bk-missing span{color:var(--muted);margin-right:2px}.bk-missing em{color:var(--muted);box-shadow:inset 0 0 0 1px var(--line);padding:1px 6px;font-style:normal}.bk-fields{border-top:1px solid var(--line);flex-direction:column;gap:14px;margin:12px 0 0;padding-top:12px;display:flex}.bk-field{flex-direction:column;gap:6px;display:flex}.bk-field dt{color:var(--ink2);font-size:12px;font-weight:600}.bk-field dd{min-width:0;margin:0}.bk-ro{color:var(--ink);margin:0;font-size:15px;line-height:1.6}.bk-detail[data-owner="1"] .bk-ro,.bk-detail[data-owner="0"] .bk-rw{display:none}.bk-field input[type=text],.bk-field input[type=date],.bk-field input[type=number],.bk-f input,.bk-f select,.bk-isbn-row input{background:var(--paper);border:1px solid var(--line);width:100%;min-width:0;font:inherit;color:var(--ink);border-radius:0;padding:8px 10px;font-size:14px}.bk-field input:focus,.bk-f input:focus,.bk-f select:focus,.bk-isbn-row input:focus{outline:2px solid var(--ink);outline-offset:-1px;border-color:#0000}.bk-row2{align-items:center;gap:8px;display:flex}.bk-gap{gap:18px}.bk-sep{color:var(--muted)}.bk-pages input{flex:none;width:92px!important}.bk-total{color:var(--ink2);font-size:14px}.bk-pct{font-family:var(--mono);color:var(--ink);margin-left:auto;font-size:14px}.bk-range{width:100%;accent-color:var(--ink);margin-top:10px}.bk-range:disabled{opacity:.35}.bk-actions{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:20px;padding-top:12px;display:flex}.bk-detail[data-owner="0"] .bk-actions{justify-content:flex-end}.bk-rating-row{align-items:center;gap:12px;display:flex}.bk-rating{touch-action:manipulation;outline:none;align-items:center;padding:8px 0;display:inline-flex}.bk-detail[data-owner="1"] .bk-rating{cursor:pointer}.bk-rating:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.bk-star{width:18px;height:18px;box-shadow:inset 0 0 0 1px var(--decor);transition:box-shadow .2s;display:block;position:relative;overflow:hidden}.bk-fill{background:var(--ink);transform-origin:0;transition:transform .22s cubic-bezier(.3,.7,.2,1);position:absolute;inset:0;transform:scaleX(0)}.bk-star[data-v="0.5"] .bk-fill{transform:scaleX(.5)}.bk-star[data-v="1"] .bk-fill{transform:scaleX(1)}.bk-star:not([data-v="0"]){box-shadow:inset 0 0 0 1px var(--ink)}.bk-link{background:var(--ink);transform-origin:0;width:8px;height:1px;transition:transform .18s;display:block;transform:scaleX(0)}.bk-link.bk-on{transform:scaleX(1)}.bk-rating-num{min-width:2.5em;font-family:var(--mono);color:var(--ink);font-size:13px;transition:color .15s}.bk-rating-num.bk-preview{color:var(--muted)}.bk-stage{perspective:1800px;pointer-events:none;position:absolute;inset:0}.bk-ghost{transform-style:preserve-3d;transform-origin:50%;will-change:transform;position:absolute}.bk-face{backface-visibility:hidden;height:100%;position:absolute;top:0}.bk-g-front{width:100%;left:0;overflow:hidden;box-shadow:0 24px 48px #1c1b1840}.bk-g-front:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000002e,#0000 4%,#ffffff14 6%,#0000 12%);position:absolute;inset:0}.bk-g-back{background:var(--c);filter:brightness(.8);width:100%;left:0}.bk-g-spine{background:var(--c);color:var(--c-ink);--w:var(--gw);overflow:hidden}.bk-g-pages{background:repeating-linear-gradient(90deg,#f3eee2 0 1px,#ddd6c6 1px 2px)}.bk-g-spine .bk-sp-title{font-size:clamp(12px,calc(var(--gw) * .4),40px)}.bk-g-spine .bk-sp-author{font-size:clamp(9px,calc(var(--gw) * .22),18px)}.bk-dlg{background:var(--surface);width:min(680px,100vw - 32px);max-height:min(88vh,860px);color:var(--ink);border:1px solid var(--line);border-radius:0;padding:24px}.bk-dlg::backdrop{backdrop-filter:blur(6px);background:#f5f3eeb3}.bk-dlg-head{border-bottom:1px solid var(--ink);align-items:center;gap:8px;padding-bottom:12px;display:flex}.bk-dlg-head h3{letter-spacing:-.01em;margin:0 auto 0 0;font-size:18px;font-weight:600}.bk-close{width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;margin-right:-8px;font-size:14px}.bk-close:hover{color:var(--ink)}.bk-dlg .bk-note{margin:16px 0}.bk-step{padding-top:16px}.bk-isbn-row{align-items:center;gap:20px;margin-top:6px;display:flex}.bk-isbn-row input{font-family:var(--mono);letter-spacing:.04em;flex:1;padding:10px 12px;font-size:16px}.bk-step-msg{min-height:1.6em;color:var(--muted);margin:10px 0 12px;font-size:13px}.bk-step-msg[data-tone=warn]{color:var(--bk-danger)}.bk-ask{letter-spacing:-.01em;margin:0 0 16px;font-size:18px;font-weight:600}.bk-found{align-items:flex-start;gap:24px;padding:4px 0;display:flex}.bk-found-cover{aspect-ratio:.68;object-fit:cover;background:var(--sunken);flex:none;width:120px;box-shadow:3px 4px 10px #1c1b182e}.bk-found-body{flex:1;min-width:0}.bk-found-body h4{letter-spacing:-.01em;margin:0;font-size:20px;font-weight:600;line-height:1.4}.bk-found-body p{color:var(--ink2);margin:4px 0 14px;font-size:14px}.bk-found-body dl{flex-direction:column;gap:6px;margin:0;font-size:13px;display:flex}.bk-found-body dl div{gap:12px;display:flex}.bk-found-body dt{color:var(--muted);flex:0 0 44px}.bk-found-body dd{min-width:0;color:var(--ink);margin:0}.bk-grid{grid-template-columns:repeat(6,1fr);gap:12px;display:grid}.bk-f{color:var(--ink2);flex-direction:column;gap:6px;min-width:0;font-size:12px;font-weight:600;display:flex}.bk-f input,.bk-f select{font-weight:400}.bk-c2{grid-column:span 2}.bk-c3{grid-column:span 3}.bk-c4{grid-column:span 4}.bk-img-pick{align-items:flex-start;gap:12px;display:flex}.bk-img-pick>div{flex-direction:column;flex:1;align-items:flex-start;gap:4px;min-width:0;display:flex}.bk-thumb{object-fit:cover;background:var(--sunken);width:52px;height:76px;box-shadow:inset 0 0 0 1px var(--line);flex:none}.bk-thumb-spine{width:18px}.bk-thumb.bk-noimg{opacity:.7}.bk-file{cursor:pointer;font-weight:400}.bk-dlg-foot{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;margin-top:20px;padding-top:12px;display:flex}.bk-dlg-foot.bk-end{justify-content:flex-end}.bk-form-msg{color:var(--bk-danger);margin-right:auto;font-size:13px}.bk-export-list{margin:0;padding:0;list-style:none}.bk-export-list li{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:14px 0;display:flex}.bk-ex-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;display:flex}.bk-ex-head strong{font-size:15px;font-weight:600}.bk-ex-head code{color:var(--muted)}.bk-ex-kind{box-shadow:inset 0 0 0 1px var(--ink);padding:1px 6px;font-size:11px;font-weight:600}.bk-ex-kind.bk-del{color:var(--bk-danger);box-shadow:inset 0 0 0 1px var(--bk-danger)}.bk-ex-actions{flex-wrap:wrap;gap:2px 18px;display:flex}.bk-empty-note{color:var(--muted);margin:16px 0;font-size:14px}.bk-toast{z-index:50;background:var(--ink);color:var(--paper);opacity:0;pointer-events:none;padding:10px 16px;font-size:13px;transition:opacity .25s,transform .25s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,16px)}.bk-toast.on{opacity:1;transform:translate(-50%)}@media (width<=720px){.bk{--bk-row-gap:44px;--bk-year-gap:64px;--bk-overhang:14px}.bk-toolbar{align-items:stretch}.bk-tools{justify-content:space-between;width:100%;padding-bottom:8px}.bk-tool-sep{display:none}.bk-floor{height:58vh}.bk-bracket{width:10px;height:34px}.bk-bracket i:nth-child(2){top:22px}.bk-detail-layout{pointer-events:auto;flex-direction:column;justify-content:flex-start;gap:16px;padding:20px 16px;overflow:auto}.bk-slot{max-width:80vw;height:34vh}.bk-panel{max-height:none;padding:18px;overflow:visible;transform:translateY(12px)}.bk-grid{grid-template-columns:repeat(2,1fr)}.bk-c2,.bk-c3,.bk-c4{grid-column:span 2}.bk-found-cover{width:92px}.bk-isbn-row{gap:14px}}@media (prefers-reduced-motion:reduce){.bk *{transition-duration:.01ms!important;animation-duration:.01ms!important}}.bk-tool-shelf+.bk-tool-shelf{box-shadow:inset 1px 0 0 var(--line-strong);padding-left:20px}.bk-period{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.bk-date{background:var(--paper);border:1px solid var(--line);align-items:center;gap:2px;padding:0 4px;display:inline-flex}.bk-date:focus-within{outline:2px solid var(--ink);outline-offset:-1px;border-color:#0000}.bk-date.bk-dp-bad{box-shadow:inset 0 -2px 0 var(--bk-danger)}.bk-period{flex-direction:column;align-items:flex-start;gap:6px}.bk-period-row{align-items:center;gap:10px;display:flex}.bk-period-label{width:2em;color:var(--muted);font-size:13px}.bk-field .bk-date input[type=text]{min-width:0;font:inherit;font-size:14px;font-family:var(--mono);color:var(--ink);text-align:center;background:0 0;border:0;outline:none;padding:8px 1px}.bk-field .bk-date input[type=text].bk-dp-y{width:5.2em}.bk-field .bk-date input[type=text].bk-dp-m,.bk-field .bk-date input[type=text].bk-dp-d{width:3.9em}.bk-date{padding:0 6px}.bk-dp-dot{color:var(--muted)}
