:root{--bg:#F6F7FA;--card:#FFFFFF;--ink:#1B1F2E;--ink2:#4A4F60;--muted:#7A7F90;--line:#DCDFE7;--blue:#3E4FB5;--soft:#E8EBF9;--ok:#2E7D5B;--okbg:#E1F2EA;--warn:#B5541B;--warnbg:#FBE9DD;--gray:#EEF0F5;--amber:#C98F1A;--amberbg:#FBF1D8}@media (prefers-color-scheme:dark){:root{--bg:#13151D;--card:#1B1E29;--ink:#E9EAF0;--ink2:#C2C5D1;--muted:#8B90A1;--line:#2B2F3D;--blue:#8F9BF2;--soft:#242A45;--ok:#6FCBA0;--okbg:#1C3329;--warn:#F0985F;--warnbg:#3A2618;--gray:#22252F;--amber:#E4B54B;--amberbg:#33301F}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Gowun Dodum,Apple SD Gothic Neo,Noto Sans KR,system-ui,sans-serif;word-break:keep-all;font-size:15px;line-height:1.65}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.mono{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.shell{max-width:1120px;margin:0 auto;padding:26px 24px 80px;display:flex;flex-direction:column;gap:22px}.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding-bottom:16px;flex-wrap:wrap}.eyebrow{font-family:IBM Plex Mono,monospace;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 5px}h1{margin:0;font-size:26px;line-height:1.25}h2{margin:8px 0 0;font-size:17px}.nav{display:flex;gap:6px}.nav a{font-size:14px;padding:7px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--ink2)}.nav a.on{background:var(--blue);border-color:var(--blue);color:#fff}.nav a:hover{text-decoration:none}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line)}.stat{background:var(--card);padding:14px 16px}.stat .k{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.stat .v{font-size:25px;font-weight:700;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.15}.stat .n{font-size:12.5px;color:var(--muted);margin:3px 0 0}.tbl{overflow-x:auto;border:1px solid var(--line);background:var(--card)}table{border-collapse:collapse;width:100%;font-size:14px;min-width:760px}td,th{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;letter-spacing:.04em;color:var(--muted);background:var(--bg);white-space:nowrap;font-weight:600}tr:last-child td{border-bottom:0}.pill{display:inline-block;font-size:12px;padding:2px 9px;border-radius:3px;font-weight:500;white-space:nowrap}.pill.ok{background:var(--okbg);color:var(--ok)}.pill.warn{background:var(--warnbg);color:var(--warn)}.pill.gray{background:var(--gray);color:var(--muted)}.pill.amber{background:var(--amberbg);color:var(--amber)}.lv{display:inline-flex;gap:3px;flex-wrap:wrap}.lv i{font-style:normal;font-family:IBM Plex Mono,monospace;font-size:11px;padding:1px 6px;border-radius:3px;background:var(--gray);color:var(--muted)}.lv i.has{background:var(--soft);color:var(--blue);font-weight:600}.lv i.out{opacity:.35}.arts{display:flex;gap:4px;flex-wrap:wrap;max-width:330px}.arts span{width:24px;height:19px;border-radius:3px;background:var(--gray);border:1px solid var(--line)}.arts span.has{background:var(--ok);border-color:var(--ok)}.cmds{background:var(--card);border:1px solid var(--line);padding:15px 18px;display:flex;flex-direction:column;gap:8px;font-size:13.5px}code{font-family:IBM Plex Mono,monospace;font-size:12.5px;background:var(--gray);padding:2px 7px;border-radius:3px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:14px;gap:14px}.ill{border:1px solid var(--line);background:var(--card);border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.ill img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--gray)}.ill .b{padding:9px 11px;display:flex;flex-direction:column;gap:3px}.ill .b b{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600}.ill .b small{font-size:11.5px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.ill .b em{font-style:normal;font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--blue)}.pages{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);background:var(--card)}.pg{display:grid;grid-template-columns:64px 1fr;grid-gap:14px;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line)}.pg:last-child{border-bottom:0}.pg .no{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted)}.pg .e{font-family:Andika,sans-serif;font-size:16px;font-weight:700;margin:0}.pg .k{font-size:13px;color:var(--muted);margin:2px 0 0}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{font-size:12px;padding:2px 9px;border-radius:999px;border:1px solid var(--line);color:var(--ink2);background:var(--card)}input:not([type]),input[type=number],input[type=text]{font:inherit;font-size:14px;padding:7px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}input:focus{outline:2px solid var(--blue);outline-offset:1px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue)}.btn{font:inherit;font-size:13.5px;font-weight:600;padding:7px 16px;border-radius:8px;border:0;background:var(--blue);color:#fff;cursor:pointer}.btn:active{transform:translateY(1px)}.card{background:var(--card);border:1px solid var(--line);border-radius:10px}.card input[type=date],.card input[type=number],.card select{padding:6px 9px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit;background:var(--card);color:var(--ink)}.card input[type=date]{min-width:140px}.tag{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5}.tag.ok{background:var(--okbg);color:var(--ok)}.tag.warn{background:var(--warnbg);color:var(--warn)}.tag.gray{background:var(--soft);color:var(--muted)}.btn.ghost{background:var(--card);color:var(--muted);border:1px solid var(--line)}.btn.ghost:hover{color:var(--ink);border-color:var(--muted)}