.portfolio-page{color:#0f172a;background:radial-gradient(circle at 0 0,#2563eb33,#0000 28%),linear-gradient(135deg,#0f172a 0%,#111827 45%,#1e293b 100%);min-height:100vh;padding:32px 0}.a4-page{box-sizing:border-box;break-after:page;page-break-after:always;background:#fff;border-radius:22px;width:210mm;min-height:297mm;margin:0 auto 28px;padding:18mm;box-shadow:0 28px 80px #00000047}.hero-section{border-bottom:1px solid #e2e8f0;grid-template-columns:1.5fr .9fr;gap:28px;padding-bottom:34px;display:grid}.eyebrow{letter-spacing:.22em;color:#2563eb;margin:0 0 14px;font-size:12px;font-weight:800}.hero-section h1{letter-spacing:-.04em;color:#0f172a;margin:0;font-size:34px;line-height:1.28}.hero-desc{color:#475569;margin-top:18px;font-size:14px;line-height:1.8}.hero-card{color:#fff;background:linear-gradient(145deg,#0f172a,#1e3a8a);border-radius:22px;flex-direction:column;justify-content:flex-end;align-self:stretch;padding:24px;display:flex}.hero-card p{color:#93c5fd;margin:0 0 8px;font-size:12px}.hero-card strong{margin-bottom:12px;font-size:24px}.hero-card span{color:#dbeafe;font-size:13px;line-height:1.7}.section{margin-top:34px}.section-title{align-items:center;gap:12px;margin-bottom:16px;display:flex}.section-title span{color:#2563eb;background:#eff6ff;border-radius:13px;justify-content:center;align-items:center;width:38px;height:38px;font-weight:800;display:flex}.section-title h2{letter-spacing:-.02em;margin:0;font-size:23px}.highlight-box{background:#f8fbff;border:1px solid #dbeafe;border-radius:22px;padding:24px}.highlight-box strong{color:#1e3a8a;margin-bottom:12px;font-size:19px;display:block}.highlight-box p{color:#475569;margin:0;font-size:14px;line-height:1.85}.strength-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.strength-grid div,.tech-grid div{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:18px}.strength-grid strong,.tech-grid strong{color:#1e3a8a;margin-bottom:9px;font-size:15px;display:block}.strength-grid p,.tech-grid p{color:#64748b;margin:0;font-size:13px;line-height:1.65}.project-list{flex-direction:column;gap:24px;display:flex}.project-card{background:#fff;border:1px solid #e2e8f0;border-radius:24px;padding:24px;box-shadow:0 12px 30px #0f172a0f}.project-card.large{padding:28px}.project-head{justify-content:space-between;gap:20px;margin-bottom:18px;display:flex}.project-index{color:#2563eb;letter-spacing:.12em;margin:0 0 6px;font-size:11px;font-weight:800}.project-head h3{letter-spacing:-.02em;margin:0 0 6px;font-size:22px}.project-head span{color:#64748b;font-size:14px}.project-head em{white-space:nowrap;color:#1d4ed8;background:#eff6ff;border-radius:999px;height:fit-content;padding:8px 12px;font-size:12px;font-style:normal;font-weight:700}.project-body{grid-template-columns:repeat(3,1fr);gap:13px;display:grid}.project-body p{color:#475569;background:#f8fafc;border-radius:16px;margin:0;padding:15px;font-size:13px;line-height:1.7}.project-body b{color:#0f172a;margin-bottom:8px;font-size:14px;display:block}.stack-list{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.stack-list span{color:#334155;background:#f1f5f9;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:600}.tech-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.closing-section{color:#fff;background:#0f172a;border-radius:24px;margin-top:34px;padding:28px}.closing-section h2{margin:0 0 12px;font-size:22px}.closing-section p{color:#cbd5e1;margin:0;font-size:14px;line-height:1.85}@page{size:A4;margin:0}@media print{html,body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;margin:0;padding:0}.portfolio-page{background:#fff;padding:0}.a4-page{width:210mm;height:297mm;min-height:297mm;box-shadow:none;page-break-after:always;break-after:page;border-radius:0;margin:0;padding:18mm}.a4-page:last-child{page-break-after:auto;break-after:auto}}:root{--bg:#f3f4f6;--bg-soft:#eaecf0;--surface:#fff;--border:#e3e6ea;--border-strong:#d3d7de;--text:#18181b;--text-muted:#5b5b66;--text-faint:#9a9aa5;--accent:#2563eb;--accent-soft:#eff4ff;--accent-border:#d4e0ff;--font-sans:"Pretendard Variable", Pretendard, system-ui, -apple-system, "Noto Sans KR", sans-serif;--font-mono:ui-monospace, "SF Mono", "Menlo", monospace;--maxw:940px;--radius:14px}@media (prefers-color-scheme:dark){:root{--bg:#0e0e11;--bg-soft:#141417;--surface:#151519;--border:#26262b;--border-strong:#303036;--text:#f4f4f5;--text-muted:#a1a1aa;--text-faint:#6b6b74;--accent:#6ea8ff;--accent-soft:#6ea8ff1a;--accent-border:#6ea8ff47}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.65;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}ul{list-style:none}img{max-width:100%;display:block}::selection{background:var(--accent-soft);color:var(--accent)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid var(--bg);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 2rem}.section{padding:5.5rem 0}@media (width<=640px){.section{padding:4rem 0}}.eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:500}.section-head{align-items:baseline;gap:.9rem;margin-bottom:2.5rem;display:flex}.section-head .idx{font-family:var(--font-mono);color:var(--text-faint);font-size:.8rem}.section-head h2{letter-spacing:-.03em;color:var(--text);font-size:clamp(1.5rem,3.5vw,2rem);font-weight:650}.section-head .rule{background:var(--border);flex:1;align-self:center;height:1px}.muted{color:var(--text-muted)}.btn{border-radius:10px;align-items:center;gap:.5rem;padding:.7rem 1.35rem;font-size:.9rem;font-weight:550;transition:transform .18s,background .18s,border-color .18s,color .18s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(1.05);transform:translateY(-2px)}.btn-ghost{border:1px solid var(--border-strong);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.band{color:#eef1f7;background:radial-gradient(1100px 460px at 72% -12%,#386ee652,#0000 62%),linear-gradient(162deg,#0d1224 0%,#141c38 58%,#0b1126 100%);position:relative}.band:after{content:"";background:#ffffff14;height:1px;position:absolute;bottom:0;left:0;right:0}.band .eyebrow{color:#88abff}.band .muted{color:#eef1f7ad}.band .btn-ghost{color:#eef1f7;border-color:#ffffff42}.band .btn-ghost:hover{color:#fff;border-color:#fff}.band-chip{color:#eef1f7d9;background:#ffffff12;border:1px solid #ffffff29;border-radius:20px;align-items:center;gap:8px;padding:.3rem .8rem;font-size:.78rem;display:inline-flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem;transition:border-color .2s,box-shadow .2s,transform .2s;box-shadow:0 1px 2px #1018280a}.card-hover:hover{border-color:var(--border-strong);transform:translateY(-3px);box-shadow:0 12px 30px #0f172a0f}.tag{font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-muted);background:var(--bg-soft);border:1px solid var(--border);border-radius:7px;align-items:center;padding:.28rem .6rem;font-size:.72rem;display:inline-flex}.tag-accent{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-border)}.code-block{color:#d6def0;font-family:var(--font-mono);white-space:pre;background:#0d1224;border:1px solid #1e2742;border-radius:10px;margin-top:.7rem;padding:.9rem 1rem;font-size:.74rem;line-height:1.65;overflow-x:auto}.media-slot{border:1.5px dashed var(--border-strong);background:var(--bg-soft);text-align:center;min-height:150px;color:var(--text-faint);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:1rem;display:flex}.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(22px)}.reveal.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}*{scroll-behavior:auto}}@media print{.site-header,.no-print{display:none!important}.reveal{opacity:1!important;transform:none!important}}
