
:root{--night:#17181c;--char:#1e1f22;--paper:#f3eee5;--paper2:#e9e2d5;--ink:#1b1c1f;--mut:#6d665c;--acc:#e4572e;--accd:#b8401e;--note:#ffe04a;--line:#d9d0c1}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:"Noto Sans KR",system-ui,sans-serif;font-size:17px;line-height:1.7;word-break:keep-all}
a{color:inherit}
.wrap{max-width:720px;margin:0 auto;padding:0 20px}
.top{display:flex;align-items:center;gap:10px;padding:14px 0}
.top a{text-decoration:none;display:flex;align-items:center;gap:10px;font-family:Jua,sans-serif;font-size:21px}
.top img{width:34px;height:34px;border-radius:50%}
.top nav{margin-left:auto;display:flex;gap:14px;font-size:14px;color:var(--mut)}
.top nav a{font-family:inherit;font-size:14px}
.hero{background:var(--night);color:#fff;position:relative;overflow:hidden}
.hero .img{position:absolute;inset:0;background:url(/assets/hero.jpg) center 40%/cover;opacity:.55}
.hero .fade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,24,28,.2),rgba(23,24,28,.92) 85%)}
.hero .hbody{position:relative;padding-top:190px;padding-bottom:40px}
.hero .top{position:absolute;left:0;right:0;top:0;color:#fff;z-index:2}
.hero .top nav{color:#e7e2da}
.hero h1{font-family:Jua,sans-serif;font-weight:400;font-size:40px;line-height:1.2;letter-spacing:-1px}
.hero h1 span{color:var(--note)}
.hero p{margin-top:12px;color:#d9d4cc;font-size:17px}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:26px 0 10px}
.filters button{font:inherit;font-size:14px;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;cursor:pointer;color:var(--ink)}
.filters button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.filters button:focus-visible,.card:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.list{display:grid;gap:14px;margin:10px 0 50px}
.card{display:block;text-decoration:none;background:#fff;border:1.5px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:0 4px 0 var(--paper2)}
.card:hover{border-color:var(--ink)}
.tags{display:flex;gap:6px;flex-wrap:wrap;font-size:12.5px}
.tags span{background:var(--paper);border-radius:6px;padding:1px 8px;color:var(--mut)}
.tags span.t{background:var(--ink);color:#fff}
.card h2{font-size:20px;line-height:1.4;margin:8px 0 4px;letter-spacing:-.3px}
.card p{font-size:15px;color:var(--mut);line-height:1.6}
.meta{font-size:13px;color:var(--mut);margin-top:8px}
.empty{color:var(--mut);padding:30px 0}
foot,.foot{display:block;border-top:1.5px solid var(--line);padding:28px 20px 60px;font-size:14px;color:var(--mut)}
.foot .sig{font-family:Jua,sans-serif;font-size:18px;color:var(--ink);display:flex;align-items:center;gap:10px}
.foot .sig img{width:44px;height:44px;border-radius:50%}
.foot .links{display:flex;gap:16px;margin-top:12px}
/* 가이드 */
.g-head{padding:26px 0 10px}
.g-head h1{font-size:30px;line-height:1.3;letter-spacing:-.8px}
.g-head .hook{font-family:Jua,sans-serif;color:var(--acc);font-size:18px;margin-bottom:6px}
.intro{background:#fff;border-radius:16px;padding:18px 20px;margin:18px 0;border:1.5px solid var(--line)}
.intro p+p{margin-top:8px}
.sec{margin:34px 0}
.sec h2{font-size:23px;letter-spacing:-.4px;display:flex;align-items:center;gap:10px}
.sec h2 i{font-style:normal;background:var(--acc);color:#fff;font-size:13px;border-radius:6px;padding:2px 8px;font-weight:700}
.sec .lead{color:var(--mut);margin-top:4px}
ol.steps{list-style:none;counter-reset:s;margin-top:14px}
ol.steps li{counter-increment:s;position:relative;padding:0 0 16px 46px}
ol.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center}
ol.steps li:not(:last-child)::after{content:"";position:absolute;left:15px;top:36px;bottom:4px;width:2px;background:var(--line)}
.path{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}
.path b{background:var(--note);border-radius:6px;padding:1px 9px;font-size:15px}
.path s{text-decoration:none;color:var(--mut)}
.code{position:relative;margin-top:8px;background:#17181c;color:#f3eee5;border-radius:12px;overflow:hidden}
.code pre{padding:14px 16px;overflow-x:auto;font:14px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word}
.code .cp{position:absolute;right:8px;top:8px;font:inherit;font-size:12px;background:var(--note);color:var(--ink);border:0;border-radius:6px;padding:3px 10px;cursor:pointer}
.notes{background:var(--paper2);border-radius:12px;padding:12px 16px;margin-top:6px;font-size:15px}
.notes li{margin-left:18px}
.lst{display:grid;gap:10px;margin-top:14px}
.lst div{background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:12px 16px}
.lst b{display:block}
.src{font-size:14px;color:var(--mut);margin-top:30px}
.src a{word-break:break-all}
.outro{margin:34px 0 10px;background:var(--night);color:#fff;border-radius:18px;padding:22px;display:flex;gap:14px;align-items:center}
.outro img{width:64px;height:64px;border-radius:50%;flex:none}
.back{display:inline-block;margin-top:6px;font-size:14px;color:var(--mut)}
@media (max-width:480px){.hero h1{font-size:32px}.hero .hbody{padding-top:160px}.g-head h1{font-size:26px}}
@media (prefers-reduced-motion:no-preference){.card{transition:border-color .15s}}
