:root{--purple:#5b21b6;--purple-hover:#4c1d95;--purple-tint:#f3effc;--text:#18181b;--muted:#52525b;--border:#e4e4e7;--surface:#fafafc;--danger:#b91c1c;--danger-tint:#fef2f2;--header-height:64px;color:var(--text);word-break:keep-all;overflow-wrap:break-word;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,sans-serif;line-height:1.7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px)}body{background:#fff;margin:0}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}ul,ol,dl,dd{margin:0;padding:0;list-style:none}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--purple);outline-offset:2px}.container{width:min(1040px,100% - 48px);margin-inline:auto}.container-narrow{width:min(760px,100% - 48px)}.site-header{z-index:10;border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0}.site-header-inner{min-height:var(--header-height);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-block:8px;display:flex}.site-name{color:var(--purple);font-size:18px;font-weight:700}.site-nav{color:var(--muted);flex-wrap:wrap;gap:4px 24px;font-size:15px;display:flex}.site-nav a:hover,.site-nav a.active{color:var(--purple)}.hero{padding-block:112px 104px}.accent-bar{background:var(--purple);width:48px;height:4px;margin-bottom:24px}.hero h1{letter-spacing:-.02em;font-size:clamp(36px,6vw,56px);line-height:1.25}.hero em{color:var(--purple);font-style:normal}.hero-tagline{color:var(--muted);margin:20px 0 32px;font-size:18px}.button{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;min-height:40px;padding:8px 16px;font-size:14px;display:inline-flex}.button:hover{border-color:var(--purple);color:var(--purple)}.button-primary{background:var(--purple);border-color:var(--purple);color:#fff}.button-primary:hover{background:var(--purple-hover);border-color:var(--purple-hover);color:#fff}.button-danger{color:var(--danger)}.button-danger:hover{border-color:var(--danger);color:var(--danger)}.button:disabled{opacity:.55;cursor:not-allowed}.section{border-top:1px solid var(--border);padding-block:64px}.section>h2{letter-spacing:-.01em;margin-bottom:32px;font-size:28px}.tag{background:var(--purple-tint);color:var(--purple);border-radius:999px;padding:3px 12px;font-size:13px;display:inline-block}.tech-list{gap:16px;display:grid}.tech-list>div{grid-template-columns:120px minmax(0,1fr);gap:8px 16px;display:grid}.tech-list dt{color:var(--muted);font-size:15px}.tech-list dd{flex-wrap:wrap;gap:8px;display:flex}.career-list{gap:32px;display:grid}.career-list li{grid-template-columns:180px minmax(0,1fr);gap:8px 24px;display:grid}.career-period{color:var(--muted);font-size:15px}.career-list h3{font-size:18px}.career-role{color:var(--purple);margin-bottom:8px;font-size:15px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px;display:grid}.project-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:8px;padding:24px;transition:border-color .15s;display:flex}.project-card:hover{border-color:var(--purple)}.project-card h3{font-size:18px}.project-card p{color:var(--muted);flex:1;font-size:15px}.project-categories{color:var(--purple);font-size:13px}.site-footer{border-top:1px solid var(--border);background:var(--surface);margin-top:48px}.site-footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;min-height:88px;padding-block:24px;display:flex}.site-footer-title{font-weight:600}.contact-list{color:var(--muted);flex-wrap:wrap;gap:24px;display:flex}.contact-list a:hover{color:var(--purple)}.page{min-height:60vh;padding-block:56px 32px}.page-title{letter-spacing:-.02em;margin-bottom:24px;font-size:36px}.status{color:var(--muted);padding-block:32px}.status-error{color:var(--danger);justify-items:start;gap:12px;display:grid}.back-link{color:var(--muted);font-size:14px;display:inline-block}.back-link:hover{color:var(--purple)}input[type=text],input[type=search],input[type=password],select,textarea{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;min-height:40px;padding:8px 12px}.search{gap:8px;margin-bottom:16px;display:flex}.filter{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.filter-chip{border:1px solid var(--border);cursor:pointer;min-height:32px;color:var(--muted);background:#fff;border-radius:999px;padding:4px 14px;font-size:13px}.filter-chip:hover{border-color:var(--purple);color:var(--purple)}.filter-chip[aria-pressed=true]{background:var(--purple);border-color:var(--purple);color:#fff}.post-list{border-top:1px solid var(--border)}.post-list li{border-bottom:1px solid var(--border)}.post-list a{padding-block:20px;display:block}.post-list a:hover h2{color:var(--purple)}.post-heading{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.post-heading h2{font-size:19px}.post-heading time{color:var(--muted);white-space:nowrap;font-size:13px}.post-list p{color:var(--muted);margin-block:4px;font-size:15px}.pagination{flex-wrap:wrap;justify-content:center;gap:4px;margin-top:32px;display:flex}.pagination button{cursor:pointer;min-width:36px;min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:4px 10px}.pagination button:hover:not(:disabled){color:var(--purple);background:var(--purple-tint)}.pagination button[aria-current=page]{background:var(--purple);color:#fff}.pagination button:disabled{opacity:.4;cursor:default}.article-title{letter-spacing:-.02em;margin-top:16px;font-size:clamp(30px,5vw,40px);line-height:1.3}.article-meta{border-bottom:1px solid var(--border);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 40px;padding-bottom:24px;font-size:14px;display:flex}.badge{background:var(--text);color:#fff;border-radius:6px;padding:2px 10px;font-size:12px}.prose{font-size:17px;line-height:1.85}.prose>*+*{margin-top:1em}.prose h1,.prose h2,.prose h3{margin-top:1.8em;line-height:1.4}.prose h1{font-size:28px}.prose h2{font-size:24px}.prose h3{font-size:20px}.prose ul{padding-left:1.4em;list-style:outside}.prose ol{padding-left:1.4em;list-style:decimal}.prose a{color:var(--purple);text-decoration:underline}.prose blockquote{border-left:3px solid var(--purple);color:var(--muted);margin-inline:0;padding-left:16px}.prose code{background:var(--purple-tint);color:var(--purple);border-radius:4px;padding:2px 6px;font-size:.9em}.prose pre{color:#f4f4f5;background:#18181b;border-radius:8px;padding:16px;overflow-x:auto}.prose pre code{color:inherit;background:0 0;padding:0}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:8px 12px}.prose img{max-width:100%}@media (width<=640px){.container,.container-narrow{width:calc(100% - 32px)}.hero{padding-block:72px}.tech-list>div,.career-list li{grid-template-columns:minmax(0,1fr)}.post-heading{flex-direction:column;gap:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-card{transition:none}}.container-wide{width:min(1280px,100% - 48px)}.page-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.link-button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:15px}.link-button:hover{color:var(--purple)}.login{background:var(--surface);place-items:center;min-height:100vh;padding:24px;display:grid}.login-form{border:1px solid var(--border);background:#fff;border-radius:12px;gap:16px;width:min(380px,100%);padding:32px;display:grid}.login-form h1{color:var(--purple);font-size:24px}.login-form .status{padding-block:0}.login-form .back-link{justify-self:center}.field{color:var(--muted);align-content:start;gap:6px;font-size:14px;display:grid}.field input,.field select,.field textarea{color:var(--text);font-size:15px}.field-inline{grid-template-columns:auto 160px;justify-content:start;align-items:center;gap:12px;margin-bottom:16px}.field-set{border:0;margin:0;padding:0}.field-set legend{color:var(--muted);margin-bottom:8px;padding:0;font-size:14px}.field-set .filter{margin-bottom:0}.hint{color:var(--muted);font-size:14px}.hint a{color:var(--purple);text-decoration:underline}.admin-list{border-top:1px solid var(--border)}.admin-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding-block:14px;display:flex}.admin-list-main{min-width:0}.admin-list-main a:hover{color:var(--purple)}.admin-list-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.admin-list-actions{flex-shrink:0;gap:8px;display:flex}.inline-edit{gap:8px;width:100%;display:flex}.article-form{gap:20px;display:grid}.form-row{flex-wrap:wrap;align-items:flex-end;gap:24px;display:flex}.form-row .field{width:200px}.check{cursor:pointer;align-items:center;gap:8px;min-height:40px;font-size:15px;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--purple)}.editor{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.editor textarea{resize:vertical;min-height:560px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;line-height:1.7}.preview{border:1px solid var(--border);background:var(--surface);min-height:560px;color:var(--text);overflow-wrap:anywhere;border-radius:8px;padding:16px 20px}.form-actions{justify-content:flex-end;gap:8px;display:flex}.dialog-backdrop{z-index:20;background:#18181b80;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:#fff;border-radius:12px;width:min(440px,100%);padding:24px}.dialog h2{font-size:18px}.dialog-body{color:var(--muted);margin:12px 0 20px}.dialog-body strong{color:var(--danger)}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}@media (width<=800px){.container-wide{width:calc(100% - 32px)}.editor{grid-template-columns:minmax(0,1fr)}.editor textarea,.preview{min-height:320px}}@media (width<=640px){.admin-list li{flex-direction:column;align-items:stretch}.admin-list-actions{justify-content:flex-end}}.category-add{gap:8px;max-width:360px;margin-top:12px;display:flex}.field-set .status{padding-block:8px 0}.contact-list{gap:12px 40px}.contact-list li{gap:2px;display:grid}.contact-label{color:var(--text);font-size:13px;font-weight:600}.field-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.button-small{min-height:32px;padding:4px 12px;font-size:13px}.image-actions{flex-wrap:wrap;gap:8px;display:flex}.thumbnail-preview{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--border);border-radius:8px;width:min(320px,100%)}.project-thumbnail{aspect-ratio:16/9;object-fit:cover;background:var(--purple-tint);border-radius:12px 12px 0 0;width:calc(100% + 48px);max-width:none;margin:-24px -24px 8px}.project-card{overflow:hidden}.post-list a{align-items:center;gap:24px;display:flex}.post-body{flex:1;min-width:0}.post-thumbnail{aspect-ratio:4/3;object-fit:cover;border-radius:8px;flex-shrink:0;width:128px}.prose img{border-radius:8px}@media (width<=640px){.post-thumbnail{width:88px}}
