:root{--navy:#730629;--navy-deep:#171519;--teal:#8b0b37;--teal-light:#f4e6eb;--ink:#222126;--muted:#66636a;--paper:#fff;--white:#fff;--line:#e9e5e7;--soft:#f7f3f5;--rail:336px;--content:860px;color-scheme:light}
@font-face{font-family:"Pretendard Variable";src:url("./assets/fonts/PretendardVariable.woff2") format("woff2");font-weight:45 920;font-style:normal;font-display:swap}
@font-face{font-family:"SUIT Hangul";src:url("./assets/fonts/SUIT-Variable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+1100-11FF,U+3130-318F,U+AC00-D7A3,U+A960-A97F,U+D7B0-D7FF}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
[id]{scroll-margin-top:86px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Pretendard Variable",system-ui,sans-serif;line-height:1.68;word-break:keep-all}
button,input{font:inherit}
button{cursor:pointer}
a{color:var(--teal);text-underline-offset:3px}
a:hover{color:#0a6d69}
:focus-visible{outline:3px solid #e29a34;outline-offset:3px;border-radius:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--rail);overflow:hidden;background:var(--navy-deep);color:#eaf2f1;z-index:20;display:flex;flex-direction:column;justify-content:space-between;padding:34px 32px 27px;isolation:isolate}
.sidebar::before{content:"";position:absolute;inset:0;z-index:-2;background:radial-gradient(circle at 78% 23%,rgba(37,185,174,.2),transparent 23%),linear-gradient(155deg,#17384d 0%,#0d263b 42%,#071a2b 100%)}
.sidebar::after{content:"";position:absolute;inset:0;z-index:-1;opacity:.34;background-image:linear-gradient(rgba(161,231,220,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(161,231,220,.12) 1px,transparent 1px);background-size:40px 40px;mask-image:linear-gradient(to bottom,transparent,#000 25%,#000 85%,transparent)}
.signal-art{position:absolute;left:-48px;right:-45px;bottom:52px;height:330px;z-index:-1;opacity:.68;pointer-events:none}
.signal-art .orbit{position:absolute;border:1px solid rgba(91,219,203,.28);border-radius:50%;transform:rotate(-24deg)}
.signal-art .orbit:nth-child(1){width:350px;height:140px;left:-40px;bottom:70px}.signal-art .orbit:nth-child(2){width:460px;height:185px;left:-70px;bottom:52px}.signal-art .orbit:nth-child(3){width:570px;height:235px;left:-110px;bottom:24px}
.signal-art .dot{position:absolute;width:8px;height:8px;border-radius:50%;background:#55d7c8;box-shadow:0 0 25px #55d7c8}.signal-art .dot.one{left:76%;bottom:210px}.signal-art .dot.two{left:18%;bottom:85px;width:5px;height:5px}
.brand-mark{width:66px;height:66px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(139,226,217,.65);border-radius:17px;color:#fff;font-family:"Pretendard Variable",system-ui,sans-serif;font-size:27px;font-weight:600;letter-spacing:-.14em;padding-right:.14em;box-shadow:0 10px 40px rgba(0,0,0,.14);background:rgba(13,56,70,.85)}
.brand-overline{margin:28px 0 9px;color:#91c5c5;font:500 12px/1.4 "Pretendard Variable",system-ui,sans-serif;letter-spacing:.11em}
.brand-name{font-size:27px;line-height:1.25;letter-spacing:-.045em;margin:0;color:white}
.brand-role{font-size:14px;color:#b9d3d6;margin:7px 0 0}
.side-nav{display:grid;gap:4px;margin:48px 0 0}
.side-nav a{color:#d2e3e5;text-decoration:none;font-weight:600;padding:10px 13px;border-left:2px solid transparent;transition:background .15s,color .15s,border-color .15s}
.side-nav a:hover,.side-nav a[aria-current=page]{background:rgba(150,222,216,.1);color:#fff;border-color:#65d9cc}
.side-footer{display:flex;flex-direction:column;align-items:flex-start;gap:17px}
.side-links{display:flex;gap:9px;flex-wrap:wrap}.side-links a{font:500 11px/1 "Pretendard Variable",system-ui,sans-serif;color:#bcd9d9;text-decoration:none;padding:8px 9px;border:1px solid rgba(178,222,220,.35);border-radius:3px}.side-links a:hover{background:rgba(101,217,204,.14);color:white}
.side-footer small{color:#82a3ad;font:11px/1.5 "Pretendard Variable",system-ui,sans-serif}
.main{margin-left:var(--rail);min-height:100vh}
.topbar{position:sticky;top:0;height:66px;background:rgba(248,250,249,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(38px,calc((100% - var(--content))/2));z-index:10}
.breadcrumb{font:500 11px/1 "Pretendard Variable",system-ui,sans-serif;color:var(--muted);letter-spacing:.055em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb strong{color:var(--teal);font-weight:600}
.top-actions{display:flex;gap:5px;align-items:center}
.icon-btn,.text-btn{border:1px solid transparent;background:transparent;color:var(--ink);min-width:39px;min-height:39px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.icon-btn:hover,.text-btn:hover{background:var(--soft);border-color:var(--line)}
.text-btn{padding:0 10px;font:600 11px/1 "Pretendard Variable",system-ui,sans-serif}.text-btn.active{background:var(--navy);color:white}
.mobile-menu{display:none}
.content{max-width:var(--content);padding:62px 0 90px;margin:auto}
.page-kicker{display:flex;align-items:center;gap:11px;color:var(--teal);font:600 11px/1.3 "Pretendard Variable",system-ui,sans-serif;letter-spacing:.1em;margin-bottom:19px}
.page-kicker::before{content:"";width:25px;height:1px;background:var(--teal)}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(36px,4vw,60px);line-height:1.18;letter-spacing:-.07em;font-weight:700;margin-bottom:22px}
h2{font-size:25px;line-height:1.3;letter-spacing:-.045em;margin-bottom:17px}
h3{font-size:19px;line-height:1.4;letter-spacing:-.03em;margin-bottom:8px}
.lead{font-size:18px;line-height:1.8;color:#405462;max-width:680px}
.page-intro{padding-bottom:44px;border-bottom:1px solid var(--line)}
.page-intro.compact h1{font-size:clamp(36px,3.7vw,50px)}
.intro-actions,.item-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:27px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;border:1px solid var(--navy);background:var(--navy);color:white;padding:11px 17px;border-radius:4px;font-weight:700;font-size:13px;line-height:1.3}
.button:hover{background:#1e4966;color:white}.button.secondary{background:transparent;color:var(--navy);border-color:#a9bdc7}.button.secondary:hover{background:var(--soft);color:var(--navy)}
.section{padding:48px 0 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:23px}.section-head h2{margin:0}.section-head a{font-size:13px;font-weight:700;white-space:nowrap}
.section-copy{max-width:650px;color:#455967}
.quick-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.quick-link{display:flex;flex-direction:column;min-height:160px;padding:21px 24px;background:var(--white);text-decoration:none;color:var(--ink);transition:background .15s}.quick-link:hover{background:#f0f8f6;color:var(--ink)}.quick-link span:first-child{font:500 11px/1.4 "Pretendard Variable",system-ui,sans-serif;color:var(--teal)}.quick-link strong{font-size:19px;margin:13px 0 4px;letter-spacing:-.03em}.quick-link small{font-size:13px;color:var(--muted)}.quick-link .arrow{align-self:flex-end;margin-top:auto;font-size:20px;color:var(--teal)}
.fact-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-block:1px solid var(--line);margin-top:42px}.fact{padding:19px 20px 18px 0}.fact+.fact{border-left:1px solid var(--line);padding-left:20px}.fact strong{display:block;font-size:20px;letter-spacing:-.04em}.fact span{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.timeline{border-left:1px solid #a6c6c5;margin:3px 0 0 9px;padding:0 0 0 30px}.timeline-item{position:relative;padding:0 0 29px}.timeline-item:last-child{padding-bottom:0}.timeline-item::before{content:"";position:absolute;left:-36px;top:8px;width:11px;height:11px;border-radius:50%;background:var(--paper);border:2px solid var(--teal)}.timeline-item time{font:500 11px/1.4 "Pretendard Variable",system-ui,sans-serif;color:var(--teal)}.timeline-item h3{margin:4px 0}.timeline-item p{color:var(--muted);font-size:14px;margin:0}
.feature-list{display:grid;gap:14px}.feature{background:var(--white);border:1px solid var(--line);padding:24px 26px;position:relative}.feature::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:3px;background:var(--teal)}.feature .meta,.project .meta,.entry .meta{font:500 11px/1.5 "Pretendard Variable",system-ui,sans-serif;color:var(--teal);margin-bottom:9px}.feature p,.project p,.entry p{color:#526572;font-size:14px;margin:0}.feature a.inline{font-weight:700;font-size:13px}
.skills{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-block;border:1px solid #b8cacc;color:#38515e;background:#fff;padding:5px 9px;border-radius:3px;font:500 11px/1.35 "Pretendard Variable",system-ui,sans-serif}
.project-stack{display:grid;gap:16px}.project{background:var(--white);border:1px solid var(--line);padding:27px 30px;display:grid;grid-template-columns:1fr auto;gap:8px 18px}.project h3{margin:0 0 8px}.project .project-top{grid-column:1/-1}.project .project-desc{grid-column:1/-1;max-width:690px}.project .role{display:block;font-size:13px;color:var(--ink);font-weight:700;margin-top:12px}.project .skills{grid-column:1/-1;margin-top:14px}.project .item-actions{grid-column:1/-1;margin-top:15px}.project .item-actions a{font-size:12px;font-weight:700;text-decoration:none;border-bottom:1px solid var(--teal)}
.resume-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(235px,1fr);gap:42px}.resume-grid .section{padding-top:40px}.resume-grid .section:first-child{padding-top:0}.resume-side{border-left:1px solid var(--line);padding-left:34px}.resume-item{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}.resume-item:last-child{border-bottom:0}.resume-item h3{font-size:16px}.resume-item .period{font:500 11px/1.5 "Pretendard Variable",system-ui,sans-serif;color:var(--teal);margin-bottom:8px}.resume-item p{font-size:13px;color:var(--muted);margin:0}.resume-item ul{font-size:13px;color:#526572;padding-left:18px;margin:9px 0 0}.resume-item li+li{margin-top:5px}
.note-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:23px 0}.filter{background:var(--white);color:var(--ink);border:1px solid var(--line);padding:8px 12px;border-radius:3px;font-size:12px;font-weight:700}.filter.active,.filter:hover{background:var(--navy);color:white;border-color:var(--navy)}.entries{display:grid;gap:12px}.entry{display:grid;grid-template-columns:126px 1fr;gap:20px;background:var(--white);border:1px solid var(--line);padding:22px 24px}.entry .category{font:600 11px/1.5 "Pretendard Variable",system-ui,sans-serif;color:var(--teal)}.entry h3{font-size:17px}.entry .more{font-size:12px;font-weight:700;margin-top:10px;display:inline-block}.empty{padding:28px;border:1px dashed var(--line);color:var(--muted)}
.search-overlay{position:fixed;inset:0;background:rgba(3,19,29,.72);z-index:50;display:none;align-items:flex-start;justify-content:center;padding:12vh 20px 30px}.search-overlay.open{display:flex}.search-panel{width:min(650px,100%);background:var(--paper);border-radius:6px;box-shadow:0 30px 90px rgba(0,0,0,.3);padding:20px}.search-row{display:flex;gap:9px}.search-row input{flex:1;min-width:0;border:1px solid var(--line);padding:12px 14px;border-radius:3px;background:var(--white);color:var(--ink)}.search-results{max-height:55vh;overflow:auto;margin-top:16px}.search-result{display:block;text-decoration:none;color:var(--ink);padding:11px 8px;border-top:1px solid var(--line)}.search-result:hover{background:var(--soft);color:var(--ink)}.search-result strong{display:block;font-size:14px}.search-result small{color:var(--muted)}
.site-footer{border-top:1px solid var(--line);padding:24px 0 0;margin-top:65px;color:var(--muted);font-size:12px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}
body.dark{--ink:#e3ecec;--muted:#a4b8bc;--paper:#0e1c29;--white:#132536;--line:#2a3f4c;--soft:#1b3341;--teal:#69d4c8;--teal-light:#163c43;color-scheme:dark}
body.dark .topbar{background:rgba(14,28,41,.94)}body.dark .lead,body.dark .section-copy,body.dark .project p,body.dark .feature p,body.dark .entry p,body.dark .resume-item p,body.dark .resume-item ul{color:#b2c3c9}body.dark .chip{background:#162c3b;color:#c6dddc;border-color:#42616b}body.dark .button.secondary{color:#d6eaea;border-color:#6b8b95}body.dark .button.secondary:hover{color:#fff}body.dark .filter{background:var(--white);color:var(--ink)}body.dark .filter.active,body.dark .filter:hover{background:#2b6a71;color:white}body.dark .quick-link:hover{background:#1a3744}body.dark .timeline-item::before{background:var(--paper)}
@media(max-width:1150px){:root{--rail:282px;--content:740px}.sidebar{padding-inline:25px}.content{padding-inline:34px}.topbar{padding-inline:34px}}
@media(max-width:800px){:root{--rail:0px}.sidebar{width:min(310px,87vw);transform:translateX(-102%);transition:transform .2s;box-shadow:15px 0 45px rgba(0,0,0,.12)}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.mobile-menu{display:inline-flex}.content{padding:42px 24px 70px}.topbar{padding-inline:16px}.topbar .breadcrumb{margin-right:auto}.resume-grid{grid-template-columns:1fr;gap:0}.resume-side{border-left:0;padding-left:0}.mobile-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:19}.mobile-scrim.open{display:block}}
@media(max-width:570px){h1{font-size:37px}.lead{font-size:16px}.content{padding-inline:18px}.quick-grid{grid-template-columns:1fr}.quick-link{min-height:130px}.fact-strip{grid-template-columns:1fr}.fact+.fact{border-left:0;border-top:1px solid var(--line);padding-left:0}.project{padding:22px}.entry{grid-template-columns:1fr;gap:5px}.section{padding-top:37px}.section-head{align-items:start}.topbar{height:59px}.text-btn{padding-inline:6px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sidebar,.side-nav a,.quick-link{transition:none}}
@media print{body,body.dark{--paper:#fff;--white:#fff;--ink:#111;--muted:#555;--line:#ccc;--teal:#08756f;background:#fff;color:#111;font-size:10pt}body.dark .lead,body.dark .section-copy,body.dark .project p,body.dark .feature p,body.dark .entry p,body.dark .resume-item p,body.dark .resume-item ul{color:#444}.sidebar,.topbar,.search-overlay,.intro-actions,.item-actions,.note-toolbar,.site-footer,.mobile-scrim{display:none!important}.main{margin:0}.content{max-width:none;padding:0}.page-intro{padding-bottom:17px}.section{padding-top:22px}.resume-grid{gap:26px}.project,.feature,.entry{break-inside:avoid;box-shadow:none}.button{display:none}}

/* The profile begins as a full-screen cover and settles into the left rail. */
.sidebar{align-items:center;justify-content:center;text-align:center;transition:width .68s cubic-bezier(.22,.8,.2,1),transform .25s ease;padding:25px 20px;touch-action:pan-y;cursor:grab}
.sidebar.is-dragging{transition:none!important;cursor:grabbing}
.sidebar.is-dragging *{user-select:none}
.cover-dragging{overflow:hidden}
.cover-dragging .main{pointer-events:none}
body[data-page=home] .mobile-menu{display:inline-flex}
.sidebar::before{background:linear-gradient(180deg,rgba(4,17,27,.56),rgba(4,17,27,.69)),url('./assets/hero-platform.jpg') center center/cover no-repeat}
.sidebar::after,.signal-art{display:none}
.sidebar>div:first-child{display:flex;flex-direction:column;align-items:center;width:100%}
.brand-mark{width:86px;height:86px;border-radius:50%;border:0;background:#730629;font-size:32px;box-shadow:0 12px 35px rgba(0,0,0,.24)}
.brand-overline{margin:23px 0 5px;color:#c3d4d9;letter-spacing:.09em}
.brand-name{font-size:24px}
.brand-role{margin-top:4px;color:#d2dcdf}
.side-nav{margin:25px 0 0;gap:1px;justify-items:center}
.side-nav a{min-width:130px;padding:4px 12px;border:0;border-bottom:2px solid transparent;background:none;font-size:16px;line-height:1.5}
.side-nav a:hover,.side-nav a[aria-current=page]{background:none;border-color:#e8f6f4}
.side-footer{align-items:center;margin-top:28px;gap:13px}
.side-links{justify-content:center}.side-links a{color:#eff7f6;background:rgba(0,0,0,.14);border-color:rgba(255,255,255,.48)}
.side-footer small{font-size:10px;color:#bbc9ce}
.cover-hint{display:none}
.cover-open{overflow:hidden}
.cover-open .sidebar{width:100vw;max-width:none;z-index:30;transform:none}
.cover-open .sidebar::before{background:linear-gradient(180deg,rgba(4,17,27,.43),rgba(4,17,27,.61)),url('./assets/hero-platform.jpg') center center/cover no-repeat}
.cover-open .brand-mark{width:112px;height:112px;font-size:40px}
.cover-open .brand-name{font-size:28px}
.cover-open .side-nav{margin-top:24px}
.cover-open .side-nav a{padding:5px 18px}
.cover-open .side-footer small{display:none}
.cover-open .cover-hint{position:absolute;right:clamp(26px,6vw,115px);top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:10px;background:none;border:0;color:white;text-align:left;font:600 12px/1.4 "Pretendard Variable",system-ui,sans-serif;letter-spacing:.05em}
.cover-hint-arrow{font:300 54px/1 "Pretendard Variable",system-ui,sans-serif}
.contact-launcher{display:grid;place-items:center;position:fixed;right:28px;bottom:25px;z-index:40;width:48px;height:48px;border:1px solid rgba(255,255,255,.35);border-radius:50%;background:#730629;color:#fff;text-decoration:none;font:700 18px/1 "Pretendard Variable",system-ui,sans-serif;letter-spacing:-.12em;padding-right:.12em;box-shadow:0 10px 30px rgba(0,0,0,.24);transition:background-color .2s ease,transform .2s ease}.contact-launcher:hover,.contact-launcher:focus-visible{background:#5d0521;color:#fff}.contact-launcher:active{transform:scale(.96)}
@media(max-width:800px){.sidebar{width:min(310px,87vw);transform:translateX(-102%)}.sidebar.open{transform:translateX(0)}.cover-open .sidebar{width:100vw;height:100dvh;padding:24px 15px;transform:none}.cover-open .brand-mark{width:88px;height:88px;font-size:34px}.cover-open .cover-hint{top:auto;right:50%;bottom:55px;transform:translateX(50%);font-size:11px;white-space:nowrap}.cover-open .cover-hint-arrow{font-size:35px;transform:rotate(-90deg)}.contact-launcher{right:18px;bottom:15px;width:46px;height:46px;font-size:16px}}
@media(max-height:630px){.cover-open .brand-mark{width:76px;height:76px;font-size:30px}.cover-open .brand-overline{margin-top:12px}.cover-open .side-nav{margin-top:13px}.cover-open .side-footer{margin-top:13px}.cover-open .cover-hint{bottom:16px;top:auto;transform:none}}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}
@media print{.cover-open{overflow:visible}.cover-hint,.contact-launcher{display:none!important}}

/* Korean display text uses SUIT; Latin letters and numerals fall back to Pretendard. */
h1,h2,h3,.quick-link strong,.fact strong{font-family:"SUIT Hangul","Pretendard Variable",system-ui,sans-serif}
h1{letter-spacing:-.04em}
h2,.brand-name{letter-spacing:-.03em}
h3{letter-spacing:-.02em}
.brand-mark,.cover-hint-arrow,.contact-launcher{font-family:"Pretendard Variable",system-ui,sans-serif}
.brand-overline,.side-links a,.side-footer small,.breadcrumb,.text-btn,.page-kicker,.quick-link span:first-child,.timeline-item time,.feature .meta,.project .meta,.entry .meta,.chip,.resume-item .period,.entry .category,.cover-open .cover-hint{font-family:"Pretendard Variable",system-ui,sans-serif}
.page-kicker,.timeline-item time,.feature .meta,.project .meta,.entry .meta,.resume-item .period,.chip{font-variant-numeric:tabular-nums}

/* Portfolio redesign: keep the established oxblood identity and make work easier to scan. */
.skip-link{position:fixed;top:12px;left:12px;z-index:60;padding:10px 14px;background:#fff;color:#730629;border:2px solid #730629;font-weight:700;text-decoration:none;transform:translateY(-160%)}
.skip-link:focus{transform:translateY(0)}
.main:focus{outline:none}
a:hover{color:#5d0521}
.button,.icon-btn,.text-btn,.filter,.project .item-actions a{transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}
.button:hover{background:#5d0521;border-color:#5d0521}
.button.secondary:hover{background:#f4e6eb;color:#5d0521;border-color:#730629}
.button:active,.icon-btn:active,.text-btn:active,.filter:active{transform:translateY(1px)}
.quick-link:hover{background:#faf1f4}
.quick-link:active{background:#f4e6eb}
.feature-list{gap:0;border-top:1px solid var(--line)}
.feature{display:grid;grid-template-columns:minmax(112px,.42fr) minmax(0,1.5fr) auto;column-gap:24px;align-items:start;padding:25px 0;border:0;border-bottom:1px solid var(--line);background:transparent}
.feature::before{display:none}
.feature .meta{grid-column:1;grid-row:1/3;margin:5px 0 0}
.feature h3{grid-column:2;grid-row:1;margin:0 0 8px;font-size:20px}
.feature p{grid-column:2;grid-row:2;color:var(--muted)}
.feature a.inline{grid-column:3;grid-row:1/3;align-self:center;white-space:nowrap}
.project-stack{gap:0;border-top:1px solid var(--line)}
.project{grid-template-columns:minmax(170px,.68fr) minmax(0,1.65fr);gap:0 30px;padding:31px 0 35px;border:0;border-bottom:1px solid var(--line);background:transparent}
.project .project-top{grid-column:1;grid-row:1/4}
.project .meta{margin-bottom:13px}
.project h3{font-size:clamp(21px,2.2vw,27px);line-height:1.3;letter-spacing:-.04em}
.project .project-desc{grid-column:2;grid-row:1;max-width:none}
.project .project-desc>p{font-size:15px;line-height:1.75;color:var(--muted)}
.project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:23px 0 0;padding:17px 0 0;border-top:1px solid var(--line)}
.project-facts dt{margin:0 0 6px;color:var(--teal);font-size:11px;font-weight:700;letter-spacing:.02em}
.project-facts dd{margin:0;color:var(--ink);font-size:13px;font-weight:600;line-height:1.6}
.project .skills{grid-column:2;grid-row:2;margin-top:22px}
.project .item-actions{grid-column:2;grid-row:3;margin-top:18px}
.project .item-actions a:hover{border-color:#5d0521}
body.dark{--ink:#f3edf0;--muted:#c5b5bd;--paper:#1c171b;--white:#282027;--line:#483740;--soft:#32252d;--teal:#f0a5bd;--teal-light:#3a2730;color-scheme:dark}
body.dark .topbar{background:rgba(28,23,27,.94)}
body.dark .lead,body.dark .section-copy,body.dark .project p,body.dark .feature p,body.dark .entry p,body.dark .resume-item p,body.dark .resume-item ul{color:var(--muted)}
body.dark .chip{background:#2d2229;color:#e9dce2;border-color:#69505d}
body.dark .button{color:#fff}
body.dark .button.secondary{color:#f3dce5;border-color:#a9788b}
body.dark .button.secondary:hover{background:#3a2730;color:#fff;border-color:#f0a5bd}
body.dark .filter.active,body.dark .filter:hover{background:#8b0b37;color:#fff;border-color:#8b0b37}
body.dark .quick-link:hover{background:#32252d}
body.dark a:hover{color:#ffd0df}
body.dark .button:hover,body.dark .filter.active:hover{color:#fff}
@media(max-width:800px){.project{grid-template-columns:1fr;gap:0}.project .project-top,.project .project-desc,.project .skills,.project .item-actions{grid-column:1;grid-row:auto}.project h3{margin-bottom:17px}.project .project-desc>p{font-size:14px}}
@media(max-width:570px){.feature{grid-template-columns:1fr;gap:0;padding:21px 0}.feature .meta,.feature h3,.feature p,.feature a.inline{grid-column:1;grid-row:auto}.feature .meta{margin:0 0 8px}.feature a.inline{justify-self:start;margin-top:13px}.project{padding:26px 0 30px}.project-facts{grid-template-columns:1fr;gap:13px;margin-top:18px}.project .skills{margin-top:19px}}
@media(prefers-reduced-motion:reduce){.button,.icon-btn,.text-btn,.filter,.project .item-actions a{transition:none}}
@media print{.skip-link{display:none}.project{display:block;padding:18px 0}.project-facts{display:block;padding-top:9px;margin-top:10px}.project-facts>div+div{margin-top:7px}.project .skills{margin-top:10px}.feature{display:block;padding:12px 0}.feature a.inline{display:none}}
