:root{--paper:#EDEEE8;--paper-hi:#F5F6F1;--ink:#191C18;--rule:#9BAB92;--rule-soft:#C3CDBD;--sub:#697065;--mark:#B8382A;--f-display:"Gowun Batang", serif;--f-body:"IBM Plex Sans KR", system-ui, sans-serif;--f-mono:"IBM Plex Mono", ui-monospace, monospace;--gut:clamp(20px, 5vw, 64px);--maxw:1080px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-weight:300;line-height:1.75;letter-spacing:-.01em;overflow-x:hidden}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--mark);outline-offset:3px}.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}.cell{border:1px solid var(--rule);background:var(--paper-hi)}.bar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule-soft)}.bar__in{display:flex;align-items:center;justify-content:space-between;height:64px}.mark{display:flex;gap:4px;align-items:center}.mark span{width:26px;height:26px;border:1px solid var(--rule);background:var(--paper-hi);display:grid;place-items:center;font-family:var(--f-display);font-size:15px;line-height:1;padding-top:1px}.bar__nav{display:flex;gap:26px;font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sub)}.bar__nav a{padding:4px 0;border-bottom:1px solid transparent;transition:border-color .2s,color .2s}.bar__nav a:hover{color:var(--ink);border-bottom-color:var(--mark)}@media(max-width:560px){.bar__nav{gap:16px;font-size:10px}}.hero{padding-block:clamp(56px,11vw,120px) clamp(48px,9vw,96px)}.ms{display:flex;gap:6px;flex-wrap:wrap}.ms__c{width:clamp(34px,9.2vw,80px);aspect-ratio:1;border:1px solid var(--rule);background:var(--paper-hi);display:grid;place-items:center;position:relative}.ms__c:after{content:"";position:absolute;inset:0;background:linear-gradient(var(--rule-soft),var(--rule-soft)) center/1px 8px no-repeat,linear-gradient(var(--rule-soft),var(--rule-soft)) center/8px 1px no-repeat;opacity:.55}.ms__c i{font-family:var(--f-display);font-weight:700;font-style:normal;font-size:clamp(19px,5.4vw,46px);line-height:1;position:relative;z-index:1;opacity:0;transform:translateY(5px);animation:ink .5s cubic-bezier(.2,.7,.3,1) forwards;animation-delay:calc(var(--i) * 90ms + .25s)}@keyframes ink{to{opacity:1;transform:none}}.hero__lede{margin-top:38px;max-width:34em;font-size:clamp(15px,1.7vw,18px);color:var(--sub)}.hero__lede b{font-weight:500;color:var(--ink)}.hero__meta{margin-top:26px;display:flex;flex-wrap:wrap;gap:8px 20px;font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;color:var(--sub)}.hero__meta span:before{content:"·";margin-right:20px;color:var(--rule)}.hero__meta span:first-child:before{content:none;margin:0}.sec{padding-block:clamp(56px,9vw,104px);border-top:1px solid var(--rule-soft)}.sec__head{display:flex;align-items:baseline;gap:16px;margin-bottom:34px;flex-wrap:wrap}.sec__eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--sub)}.sec__title{font-family:var(--f-display);font-weight:700;font-size:clamp(21px,3.2vw,30px);letter-spacing:.02em}.sec__note{margin-left:auto;font-size:13px;color:var(--sub)}@media(max-width:640px){.sec__note{margin-left:0;flex-basis:100%}}.apps{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}@media(max-width:680px){.apps{grid-template-columns:1fr}}.app{border:1px solid var(--rule);background:var(--paper-hi);padding:clamp(22px,3vw,32px);min-height:220px;display:flex;flex-direction:column;transition:box-shadow .22s,transform .22s}.app:hover{transform:translateY(-2px);box-shadow:5px 5px 0 var(--rule-soft)}.app__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.app__name{font-family:var(--f-display);font-weight:700;font-size:clamp(19px,2.4vw,24px)}.app__state{font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;color:var(--sub);border:1px solid var(--rule-soft);padding:3px 8px}.app__state--live{color:var(--mark);border-color:var(--mark)}.app__desc{font-size:14.5px;color:var(--sub);max-width:30em}.app__links{margin-top:auto;padding-top:22px;display:flex;gap:18px;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em}.app__links a{border-bottom:1px solid var(--rule);padding-bottom:2px;transition:border-color .2s,color .2s}.app__links a:hover{color:var(--mark);border-bottom-color:var(--mark)}.app--empty{background:transparent;border-color:var(--rule-soft);justify-content:center;align-items:flex-start;min-height:220px}.app--empty:hover{transform:none;box-shadow:none;border-color:var(--rule)}.app--empty .tick{width:13px;height:13px;border-left:1.5px solid var(--mark);border-bottom:1.5px solid var(--mark);transform:rotate(-52deg);margin-bottom:18px}.app--empty h3{font-family:var(--f-display);font-weight:400;font-size:19px;color:var(--sub);margin-bottom:8px}.app--empty p{font-size:13.5px;color:var(--sub);opacity:.85;max-width:22em}.log{border-top:1px solid var(--rule-soft)}.log__row{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:20px 2px;border-bottom:1px solid var(--rule-soft);transition:background .2s}.log__row:hover{background:var(--paper-hi)}.log__date{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.08em;color:var(--sub);padding-top:3px}.log__text{font-size:15px}.log__list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.log__list li{position:relative;padding-left:16px}.log__list li:before{content:"·";position:absolute;left:2px;color:var(--rule)}.log__tag{display:inline-block;font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;color:var(--sub);border:1px solid var(--rule-soft);padding:2px 7px;margin-right:10px;vertical-align:1px;transition:color .2s,border-color .2s}a.log__tag:hover{color:var(--mark);border-color:var(--mark)}@media(max-width:560px){.log__row{grid-template-columns:1fr;gap:6px}.log__date{padding-top:0}}.about{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);align-items:start}@media(max-width:760px){.about{grid-template-columns:1fr}}.about p{font-size:15.5px;color:var(--sub);margin-bottom:18px;max-width:34em}.about p:last-child{margin-bottom:0}.about strong{font-weight:500;color:var(--ink)}.contact{border:1px solid var(--rule);background:var(--paper-hi);padding:clamp(24px,3vw,34px)}.contact h3{font-family:var(--f-display);font-weight:700;font-size:19px;margin-bottom:14px}.contact p{font-size:14px;color:var(--sub);margin-bottom:20px}.contact a.mail{display:inline-block;font-family:var(--f-mono);font-size:13px;letter-spacing:.04em;border-bottom:1.5px solid var(--mark);padding-bottom:3px}.contact a.mail:hover{color:var(--mark)}.foot{border-top:1px solid var(--rule);padding:44px 0 60px}.foot__links{display:flex;flex-wrap:wrap;gap:12px 28px;font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:30px}.foot__links a{color:var(--sub);border-bottom:1px solid transparent;padding-bottom:2px}.foot__links a:hover{color:var(--ink);border-bottom-color:var(--rule)}.biz{font-size:12px;color:var(--sub);line-height:2;opacity:.9}.biz span:after{content:"·";margin:0 10px;color:var(--rule)}.biz span:last-child:after{content:none}@media(max-width:560px){.biz span{display:block}.biz span:after,.biz br{display:none}}.foot__sig{margin-top:24px;font-family:var(--f-mono);font-size:11px;color:var(--sub);letter-spacing:.1em}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.ms__c i{opacity:1;transform:none}}
