:root{color-scheme:light;--bg:#fff9f2;--bg-soft:#f8f1ff;--surface:#fffdf9;--surface-raised:#fff;--ink:#292334;--muted:#6f6878;--faint:#91899a;--border:#dfd5e5;--purple:#7562a8;--purple-strong:#604b96;--lavender:#ded5f4;--lavender-soft:#f2ecff;--coral:#ec8d78;--coral-soft:#ffe3d8;--cream:#fff0cd;--green:#4f806e;--shadow:0 24px 70px #4a345e1a;--shadow-soft:0 14px 34px #4a345e14;--shell:min(1120px, calc(100% - 40px));--radius-large:32px;--radius-medium:20px;--transition:.18s ease}:root[data-theme=dark]{color-scheme:dark;--bg:#211d28;--bg-soft:#292333;--surface:#2a2531;--surface-raised:#342d3e;--ink:#f9f2ff;--muted:#c8bdce;--faint:#a99cac;--border:#51465b;--purple:#b8a2ef;--purple-strong:#d2c2ff;--lavender:#55476d;--lavender-soft:#3b3149;--coral:#f3a18f;--coral-soft:#593b3a;--cream:#55492f;--green:#8ec5ae;--shadow:0 24px 70px #0000003d;--shadow-soft:0 14px 34px #0000002e}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg);scroll-padding-top:96px}body{min-width:320px;color:var(--ink);background:radial-gradient(circle at 12% 2%, #ec8d781f, transparent 26rem), radial-gradient(circle at 90% 10%, #7562a81f, transparent 30rem), var(--bg);word-break:keep-all;transition:color var(--transition), background-color var(--transition);margin:0;font-family:Pretendard,Noto Sans KR,Apple SD Gothic Neo,system-ui,sans-serif;font-size:16px;line-height:1.7}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}img,svg{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.045em;line-height:1.2}::selection{color:var(--ink);background:var(--lavender)}:focus-visible{outline:3px solid var(--coral);outline-offset:4px}.shell{width:var(--shell);margin-inline:auto}.skip-link{z-index:1000;color:var(--surface);background:var(--ink);transition:transform var(--transition);border-radius:999px;padding:10px 16px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:100;border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);background:color-mix(in srgb, var(--bg) 82%, transparent);backdrop-filter:blur(18px);position:sticky;top:0}.header-inner{grid-template-columns:1fr auto 1fr;align-items:center;min-height:76px;display:grid}.brand{color:var(--ink);letter-spacing:.12em;justify-self:start;align-items:center;gap:10px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{border:1px solid var(--border);width:34px;height:34px;color:var(--purple-strong);background:var(--lavender-soft);border-radius:50%;place-items:center;display:grid}.main-nav{align-items:center;gap:28px;display:flex}.main-nav a{color:var(--muted);font-size:14px;font-weight:650;text-decoration:none;position:relative}.main-nav a:after{background:var(--coral);content:"";height:2px;transition:transform var(--transition);border-radius:2px;position:absolute;bottom:-7px;left:0;right:0;transform:scaleX(0)}.main-nav a:hover:after{transform:scaleX(1)}.theme-toggle{border:1px solid var(--border);width:42px;height:42px;color:var(--ink);background:var(--surface);cursor:pointer;transition:border-color var(--transition), transform var(--transition), background var(--transition);border-radius:50%;justify-self:end;place-items:center;padding:0;display:grid}.theme-toggle:hover{border-color:var(--purple);transform:rotate(8deg)}.theme-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:19px;height:19px;transition:opacity var(--transition), transform var(--transition);grid-area:1/1}.theme-icon--moon,[data-theme=dark] .theme-icon--sun{opacity:0;transform:scale(.6)rotate(-30deg)}[data-theme=dark] .theme-icon--moon{opacity:1;transform:scale(1)rotate(0)}.hero{grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);align-items:center;gap:clamp(40px,8vw,100px);min-height:calc(100svh - 76px);padding-block:76px 96px;display:grid}.eyebrow{color:var(--purple-strong);letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:10px;margin-bottom:22px;font-size:12px;font-weight:800;display:flex}.eyebrow:before{background:var(--coral);content:"";width:28px;height:1px}.hero h1{max-width:720px;margin-bottom:26px;font-size:clamp(43px,6vw,76px);font-weight:780;line-height:1.14}.hero h1 span{color:var(--purple-strong);position:relative}.hero h1 span:after{z-index:-1;background:var(--lavender);content:"";opacity:.72;border-radius:999px;height:16px;position:absolute;bottom:4px;left:-4px;right:-4px;transform:rotate(-1deg)}.hero-description{max-width:600px;color:var(--muted);margin-bottom:34px;font-size:clamp(17px,2vw,20px)}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.button{min-height:50px;transition:transform var(--transition), box-shadow var(--transition), background var(--transition);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:12px;padding:12px 20px;font-size:14px;font-weight:750;text-decoration:none;display:inline-flex}.button:hover{transform:translateY(-2px)}.button--primary{color:#fff;background:var(--purple-strong);box-shadow:0 12px 30px #604b963d}.button--ghost{border-color:var(--border);background:color-mix(in srgb, var(--surface) 75%, transparent)}.character-frame{aspect-ratio:.86;isolation:isolate;border:1px solid var(--border);background:linear-gradient(155deg, color-mix(in srgb, var(--lavender-soft) 84%, transparent), color-mix(in srgb, var(--coral-soft) 70%, transparent)), var(--surface);box-shadow:var(--shadow);border-radius:48% 48% 42% 42%/44% 44% 50% 50%;place-items:center;display:grid;position:relative;overflow:hidden}.character-frame:before{z-index:-1;aspect-ratio:1;background:color-mix(in srgb, var(--cream) 65%, transparent);content:"";filter:blur(2px);border-radius:50%;width:74%;position:absolute}.character-placeholder{aspect-ratio:.82;border:1px dashed color-mix(in srgb, var(--purple) 56%, transparent);width:62%;color:var(--purple-strong);background:color-mix(in srgb, var(--surface) 58%, transparent);backdrop-filter:blur(8px);border-radius:48% 48% 40% 40%;flex-direction:column;justify-content:center;align-items:center;display:flex}.character-placeholder strong{letter-spacing:.14em;margin-top:12px;font-size:11px}.character-placeholder small{color:var(--muted);margin-top:7px;font-size:12px}.character-spark{font-size:30px;animation:4s ease-in-out infinite soft-float}.orbit{z-index:-1;border:1px solid color-mix(in srgb, var(--purple) 28%, transparent);border-radius:50%;position:absolute}.orbit:after{background:var(--coral);width:11px;height:11px;box-shadow:0 0 0 7px color-mix(in srgb, var(--coral-soft) 72%, transparent);content:"";border-radius:50%;position:absolute}.orbit--one{aspect-ratio:1;width:88%;transform:rotate(24deg)}.orbit--one:after{top:18%;left:2%}.orbit--two{aspect-ratio:1;width:62%;transform:rotate(-18deg)}.orbit--two:after{background:var(--purple);width:8px;height:8px;bottom:18%;right:3%}.floating-note{border:1px solid var(--border);color:var(--muted);background:var(--surface-raised);box-shadow:var(--shadow-soft);letter-spacing:.08em;border-radius:999px;padding:8px 13px;font:700 11px/1.2 ui-monospace,monospace;position:absolute}.floating-note--top{top:15%;right:7%;transform:rotate(5deg)}.floating-note--bottom{bottom:12%;left:6%;transform:rotate(-4deg)}.section{padding-block:clamp(84px,11vw,140px)}.section-heading{max-width:700px;margin-bottom:48px}.section-heading h2{margin-bottom:18px;font-size:clamp(34px,5vw,54px)}.section-heading>p:last-child:not(.eyebrow){max-width:610px;color:var(--muted);margin-bottom:0;font-size:17px}.about-section{border-block:1px solid var(--border);background:color-mix(in srgb, var(--surface) 58%, transparent)}.about-grid{grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:clamp(50px,9vw,120px);display:grid}.about-grid .section-heading{margin-bottom:0}.about-copy>p{color:var(--muted);margin-bottom:32px;font-size:18px}.principle-list,.tag-list{margin:0;padding:0;list-style:none}.principle-list li{border-bottom:1px solid var(--border);align-items:center;gap:16px;padding-block:14px;font-weight:700;display:flex}.principle-list span{color:var(--coral);font:700 11px/1 ui-monospace,monospace}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.project-card,.post-card{border:1px solid var(--border);border-radius:var(--radius-large);background:var(--surface);min-height:360px;box-shadow:var(--shadow-soft);transition:border-color var(--transition), transform var(--transition), box-shadow var(--transition);flex-direction:column;padding:clamp(24px,4vw,36px);display:flex;position:relative}.project-card:nth-child(2n){background:linear-gradient(145deg, var(--lavender-soft), var(--surface))}.project-card:hover,.post-card:hover{border-color:color-mix(in srgb, var(--purple) 55%, var(--border));box-shadow:var(--shadow);transform:translateY(-4px)}.project-card-top{justify-content:space-between;align-items:center;margin-bottom:auto;display:flex}.project-number{color:var(--faint);font:700 12px/1 ui-monospace,monospace}.status{color:var(--purple-strong);background:var(--lavender-soft);border-radius:999px;padding:6px 10px;font-size:11px;font-weight:750}.status--active{color:var(--green);background:color-mix(in srgb, var(--green) 13%, transparent)}.project-card h3,.post-card h3{margin:28px 0 14px;font-size:clamp(25px,3vw,32px)}.project-card p,.post-card p{color:var(--muted)}.tag-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.tag-list li{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.card-link{color:var(--purple-strong);align-self:flex-start;align-items:center;gap:8px;margin-top:26px;font-size:13px;font-weight:800;text-decoration:none;display:inline-flex}.card-link:hover{text-underline-offset:5px;text-decoration:underline}.card-link--muted{color:var(--faint)}.writing-section{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--lavender-soft) 55%, transparent))}.post-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.post-card{min-height:310px;box-shadow:none}.post-card h3 a{text-decoration:none}.post-card h3 a:after{content:"";position:absolute;inset:0}.post-card .card-link{z-index:1;margin-top:auto;position:relative}.post-card-meta{color:var(--faint);flex-wrap:wrap;align-items:center;gap:9px;font-size:11px;font-weight:700;display:flex}.contact-section{padding-top:48px}.contact-panel{border:1px solid var(--border);background:radial-gradient(circle at 100% 0, color-mix(in srgb, var(--coral-soft) 70%, transparent), transparent 45%), var(--surface);box-shadow:var(--shadow);border-radius:42px;grid-template-columns:minmax(0,1fr) minmax(360px,.85fr);gap:clamp(40px,8vw,90px);padding:clamp(32px,7vw,72px);display:grid}.contact-panel .section-heading{margin-bottom:0}.contact-links{flex-direction:column;justify-content:center;gap:12px;display:flex}.contact-link{border:1px solid var(--border);border-radius:var(--radius-medium);background:color-mix(in srgb, var(--surface-raised) 80%, transparent);transition:border-color var(--transition), transform var(--transition);grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:15px;text-decoration:none;display:grid}.contact-link:hover{border-color:var(--purple);transform:translate(3px)}.contact-icon{width:42px;height:42px;color:var(--purple-strong);background:var(--lavender-soft);border-radius:14px;place-items:center;font-weight:800;display:grid}.contact-link small,.contact-link strong{display:block}.contact-link small{color:var(--faint);letter-spacing:.1em;text-transform:uppercase;font-size:10px}.contact-link strong{font-size:14px}.contact-link em{color:var(--coral);background:var(--coral-soft);border-radius:999px;padding:4px 7px;font-size:9px;font-style:normal;font-weight:800}.site-footer{padding-block:48px}.footer-inner{border-top:1px solid var(--border);color:var(--faint);justify-content:space-between;gap:20px;padding-top:28px;font-size:12px;display:flex}.footer-inner p{margin:0}.footer-inner span{color:var(--coral)}.article{max-width:820px;padding-block:clamp(70px,10vw,120px)}.article-header{border-bottom:1px solid var(--border);padding-bottom:48px}.article-header h1{margin:18px 0 22px;font-size:clamp(42px,7vw,68px)}.article-header>p{color:var(--muted);font-size:19px}.back-link{color:var(--purple-strong);align-items:center;gap:8px;margin-bottom:52px;font-size:13px;font-weight:750;text-decoration:none;display:inline-flex}.prose{color:var(--muted);padding-top:48px;font-size:18px}.prose h2,.prose h3{color:var(--ink)}.prose h2{margin-top:2.6em;font-size:30px}.prose h3{margin-top:2em}.prose p,.prose ul,.prose ol{margin-bottom:1.5em}.prose a{color:var(--purple-strong);text-underline-offset:4px}.prose code{color:var(--purple-strong);background:var(--lavender-soft);border-radius:6px;padding:.15em .35em;font-size:.9em}.not-found{flex-direction:column;justify-content:center;align-items:flex-start;min-height:calc(100svh - 180px);display:flex}.not-found h1{margin-bottom:18px;font-size:clamp(46px,8vw,80px)}.not-found>p:not(.eyebrow){max-width:580px;color:var(--muted);margin-bottom:30px;font-size:18px}@keyframes soft-float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-8px)rotate(8deg)}}@media (width<=860px){:root{--shell:min(100% - 32px, 720px)}.header-inner{grid-template-columns:1fr auto}.main-nav{display:none}.hero{grid-template-columns:1fr;min-height:auto}.character-frame{justify-self:center;width:min(100%,480px)}.about-grid,.contact-panel,.project-grid{grid-template-columns:1fr}.post-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=580px){:root{--shell:min(100% - 24px, 520px);--radius-large:24px}.header-inner{min-height:66px}.hero{padding-block:58px 78px}.hero h1{font-size:clamp(39px,12vw,54px)}.character-frame{border-radius:38px}.section{padding-block:76px}.section-heading{margin-bottom:34px}.post-grid{grid-template-columns:1fr}.project-card,.post-card{min-height:320px;padding:24px}.contact-panel{border-radius:28px;padding:26px 20px}.contact-link{grid-template-columns:auto 1fr auto}.contact-link em{display:none}.footer-inner{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
