:root{--gray-1000: #121212;--gray-950: #181818;--gray-900: #1e1e1e;--gray-850: #232324;--gray-800: #252526;--gray-750: #2d2d30;--gray-700: #323233;--gray-650: #37373d;--gray-600: #3c3c3c;--gray-500: #5a5a5a;--gray-400: #6a6a6a;--gray-300: #858585;--gray-200: #9d9d9d;--gray-100: #cccccc;--gray-50: #d4d4d4;--gray-0: #f3f3f3;--surface-editor: var(--gray-900);--surface-sidebar: var(--gray-850);--surface-activitybar: #2b2b2c;--surface-panel: var(--gray-950);--surface-titlebar: var(--gray-700);--surface-card: var(--gray-750);--surface-hover: #2a2a2b;--surface-active: var(--gray-650);--surface-input: #2b2b2c;--surface-overlay: rgba(0,0,0,.55);--border-default: var(--gray-600);--border-subtle: #2b2b2b;--border-strong: #4a4a4a;--border-focus: var(--accent-focus);--text-primary: var(--gray-50);--text-secondary: var(--gray-200);--text-muted: var(--gray-300);--text-faint: var(--gray-400);--text-inverse: #1e1e1e;--text-bright: var(--gray-0);--accent: #0e639c;--accent-hover: #1177bb;--accent-active: #0d5a8f;--accent-focus: #007acc;--accent-on: #ffffff;--link: #3794ff;--link-hover: #4ba0ff;--terminal-green: #23d18b;--terminal-green-bright: #4ee59a;--syntax-keyword: #569cd6;--syntax-string: #ce9178;--syntax-number: #b5cea8;--syntax-function: #dcdcaa;--syntax-property: #9cdcfe;--syntax-type: #4ec9b0;--syntax-comment: #6a9955;--syntax-constant: #4fc1ff;--syntax-operator: #d4d4d4;--syntax-regexp: #d16969;--syntax-tag: #569cd6;--ansi-black: #1e1e1e;--ansi-red: #f14c4c;--ansi-green: #23d18b;--ansi-yellow: #e5c07b;--ansi-blue: #3b8eea;--ansi-magenta: #d670d6;--ansi-cyan: #29b8db;--ansi-white: #cccccc;--ansi-bright-black: #5a5a5a;--success: #23d18b;--warning: #e5c07b;--error: #f14c4c;--info: #3794ff;--statusbar-bg: #0d5a8f;--statusbar-fg: #ffffff;--statusbar-bg-alt: #232324;--tech-java: #e76f00;--tech-spring: #6db33f;--tech-mysql: #4479a1;--tech-redis: #d82c20;--tech-aws: #ff9900;--tech-nginx: #009639;--tech-docker: #2496ed;--tech-kubernetes: #326ce5;--tech-python: #ffd43b;--tech-go: #00add8;--tech-node: #83cd29;--tech-postgres: #4169e1;--tech-kafka: #b1b1b1;--tech-graphql: #e10098;--tech-typescript: #3178c6;--tech-default: #9d9d9d;--traffic-close: #ff5f57;--traffic-minimize: #febc2e;--traffic-maximize: #28c840}:root{--font-mono: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "Nanum Gothic Coding", monospace;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-korean: "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: var(--font-mono);--font-code: var(--font-mono);--font-terminal: var(--font-mono);--font-body: var(--font-korean);--font-chrome: var(--font-ui);--weight-regular: 400;--weight-medium: 500;--weight-bold: 700;--weight-black: 800;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: 1.625rem;--text-2xl: 2.25rem;--text-3xl: 3rem;--text-4xl: 4rem;--leading-tight: 1.2;--leading-snug: 1.35;--leading-normal: 1.5;--leading-code: 1.55;--leading-relaxed: 1.7;--tracking-tight: 0;--tracking-normal: 0;--tracking-wide: .04em;--tracking-caps: .08em}:root{--space-0: 0;--space-px: 1px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--activitybar-width: 48px;--sidebar-width: 260px;--titlebar-height: 38px;--statusbar-height: 24px;--tab-height: 36px;--row-height: 22px;--radius-none: 0;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 8px;--radius-xl: 12px;--radius-window: 10px;--radius-pill: 999px;--shadow-none: none;--shadow-row: inset 0 0 0 1px var(--border-subtle);--shadow-card: 0 1px 2px rgba(0,0,0,.3), 0 2px 6px rgba(0,0,0,.22);--shadow-widget: 0 2px 8px rgba(0,0,0,.36), 0 0 0 1px rgba(0,0,0,.2);--shadow-popover: 0 8px 24px rgba(0,0,0,.48);--shadow-window: 0 24px 70px rgba(0,0,0,.55), 0 8px 24px rgba(0,0,0,.4);--shadow-focus: 0 0 0 1px var(--accent-focus);--ring-focus: 0 0 0 1px var(--accent-focus);--ring-inset: inset 0 0 0 1px var(--border-default);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--dur-instant: 80ms;--dur-fast: .12s;--dur-base: .18s;--dur-slow: .28s;--cursor-blink: 1.05s;--z-base: 0;--z-sticky: 100;--z-panel: 200;--z-popover: 600;--z-toast: 800;--z-modal: 1000}:root{color-scheme:dark}body{margin:0;background:var(--surface-editor);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--leading-code);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:#007acc66;color:var(--text-bright)}*{scrollbar-width:thin;scrollbar-color:#424242 transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#424242;border:2px solid transparent;background-clip:padding-box;border-radius:6px}*::-webkit-scrollbar-thumb:hover{background:#5a5a5a;background-clip:padding-box}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover);text-decoration:underline}code,pre{font-family:var(--font-code)}@keyframes portello-caret{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes portello-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:root{--font-korean: "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--portfolio-accent-warm: #e8b86a;--portfolio-accent-green: #45d990;--portfolio-accent-red: #ff6b6b;--portfolio-accent-cool: #42c7e8;--gray-900: #151a20;--gray-850: #1a2028;--gray-800: #1f2630;--gray-750: #242c36;--gray-700: #2b3541;--gray-650: #344151;--gray-600: #3d4a59;--gray-300: #8f9cac;--gray-200: #b9c4d1;--gray-100: #cbd5e1;--gray-50: #e4ebf3;--gray-0: #f6f8fb;--surface-editor: #151a20;--surface-sidebar: #1a2028;--surface-activitybar: #171d24;--surface-panel: #1f2630;--surface-titlebar: #232a33;--surface-card: #242c36;--surface-hover: #2b3541;--surface-active: #344151;--surface-input: #1f2630;--surface-overlay: rgba(8, 11, 15, .66);--border-default: #3d4a59;--border-subtle: #2a3440;--border-strong: #596a7d;--text-primary: #e4ebf3;--text-secondary: #c2ccd8;--text-muted: #9aa8b8;--text-faint: #738093;--text-bright: #f8fafc;--accent: #127d9f;--accent-hover: #1b92b7;--accent-active: #0f6f8c;--accent-focus: #38c7e8;--link: #5fd5f3;--link-hover: #8be5f8;--link-visited: #b8a8ff;--terminal-green: var(--portfolio-accent-green);--terminal-green-bright: #65e6a7;--statusbar-bg: #14373d;--statusbar-fg: #eaf9fb;--radius-sm: 5px;--radius-md: 7px;--radius-lg: 10px;--radius-xl: 14px;--radius-window: 14px;--shadow-card: 0 1px 1px rgba(0, 0, 0, .26), 0 8px 22px rgba(0, 0, 0, .16);--shadow-popover: 0 18px 44px rgba(0, 0, 0, .42), 0 0 0 1px rgba(255, 255, 255, .03);--activitybar-width: 56px;--sidebar-width: 250px;--titlebar-height: 42px;--tab-height: 44px;--statusbar-height: 26px;--row-height: 30px;--emphasis-key: var(--portfolio-accent-cool);--emphasis-code: var(--syntax-property);--text-reading: .9375rem}*{box-sizing:border-box}html{min-width:320px;background:var(--surface-editor)}body{min-width:320px;overflow-x:hidden;letter-spacing:0}a:visited:not(.project-card-link):not(.portfolio-link-button):not(.project-link-chip):not(.detail-home-link):not(.detail-back-link){color:var(--link-visited)}button,input{font:inherit;letter-spacing:0}.portfolio-reading,.portfolio-reading p,.portfolio-reading li,.portfolio-reading dd,.portfolio-reading blockquote{font-family:var(--font-korean);letter-spacing:0;word-break:keep-all;overflow-wrap:anywhere}.rich-text-strong{color:var(--text-bright);font-weight:var(--weight-bold)}.rich-text-mark{background:none;color:var(--emphasis-key);font-weight:var(--weight-bold)}.rich-text-code{padding:.04em .34em;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--gray-0) 8%,transparent);color:var(--text-bright);font-family:var(--font-mono);font-size:.9em}.skip-link{background:var(--accent);color:var(--accent-on);left:12px;min-height:44px;display:inline-flex;align-items:center;padding:0 14px;position:fixed;top:12px;transform:translateY(-140%);transition:transform var(--dur-fast) var(--ease-standard);z-index:var(--z-modal)}.skip-link:focus{transform:translateY(0)}.portfolio-shell{height:100svh;padding:16px;overflow:hidden;background:#0f1318}.ide-window{height:calc(100svh - 32px);display:grid;grid-template-rows:var(--titlebar-height) minmax(0,1fr) var(--statusbar-height);overflow:hidden;border:1px solid var(--border-default);border-radius:var(--radius-window);background:var(--surface-editor);box-shadow:0 26px 64px #00000070,0 0 0 1px #ffffff09}.ide-titlebar{display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;gap:12px;height:var(--titlebar-height);padding:0 12px;background:var(--surface-titlebar);border-bottom:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff08;font-family:var(--font-chrome);color:var(--text-secondary)}.window-traffic{display:flex;align-items:center;gap:8px}.window-dot{width:12px;height:12px;flex:none;border-radius:50%}.window-dot.close{background:var(--traffic-close)}.window-dot.minimize{background:var(--traffic-minimize)}.window-dot.maximize{background:var(--traffic-maximize)}.ide-title{min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs)}.titlebar-right{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}.title-actions{display:inline-flex;align-items:center;gap:8px;min-width:0;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-secondary)}.nav-toggle{display:none;align-items:center;justify-content:center;width:36px;height:32px;flex:none;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.nav-toggle:hover{color:var(--text-bright);background:var(--surface-hover)}.nav-toggle:focus-visible{outline:2px solid var(--accent-focus);outline-offset:1px}.nav-backdrop{display:none;border:0;padding:0}.ide-body{min-height:0;display:grid;grid-template-columns:var(--activitybar-width) var(--sidebar-width) minmax(0,1fr)}.activity-bar{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 6px;background:var(--surface-activitybar);border-right:1px solid var(--border-subtle)}.activity-button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);cursor:default}.activity-button.is-active{color:var(--text-bright);background:color-mix(in srgb,var(--portfolio-accent-cool) 12%,var(--surface-active));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--portfolio-accent-cool) 38%,transparent)}.activity-spacer{flex:1}.explorer{min-width:0;overflow:hidden;background:var(--surface-sidebar);border-right:1px solid var(--border-subtle)}.explorer-header{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 12px;font-family:var(--font-chrome);font-size:var(--text-2xs);color:var(--text-secondary);background:var(--surface-sidebar);border-bottom:1px solid var(--border-subtle)}.explorer-tree{padding:8px 0 14px}.explorer-root{padding:0 12px 6px;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--text-primary)}.explorer-file-row,.explorer-folder-row{transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}.explorer-file-row:hover{color:var(--text-bright)!important;background:var(--surface-hover)!important}.explorer-file-row--active:hover{background:color-mix(in srgb,var(--portfolio-accent-cool) 15%,var(--surface-active))!important}.editor-area{min-width:0;min-height:0;display:grid;grid-template-rows:var(--tab-height) minmax(0,1fr);background:var(--surface-editor)}.editor-tabs{min-width:0;display:flex;align-items:stretch;position:relative;overflow:visible;gap:6px;padding:5px 8px 0;background:var(--surface-titlebar);border-bottom:1px solid var(--border-subtle);scrollbar-width:none}.editor-tabs::-webkit-scrollbar{display:none}.editor-tab-list{min-width:0;display:flex;align-items:end;gap:4px;flex:1;overflow:hidden}.editor-tab{position:relative;display:flex;align-items:center;gap:7px;height:calc(var(--tab-height) - 6px);max-width:220px;min-width:0;padding:0 16px 0 12px;border:1px solid transparent;border-bottom:0;border-radius:var(--radius-md) var(--radius-md) 0 0;background:transparent;color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1;user-select:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.editor-tab:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--border-default) 62%,transparent);background:color-mix(in srgb,var(--surface-hover) 82%,transparent)}.editor-tab--active{color:var(--text-bright);border-color:var(--border-subtle);border-bottom-color:var(--surface-editor);background:var(--surface-editor);box-shadow:0 -1px #ffffff08}.editor-tab-active-line{position:absolute;top:0;left:10px;right:10px;height:2px;border-radius:var(--radius-pill);background:var(--accent-focus)}.editor-tab-icon{flex:none;color:var(--text-faint)}.editor-tab-icon--project{color:var(--portfolio-accent-cool)}.editor-tab-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.editor-tabs-menu{position:relative;flex:none;align-self:end}.editor-tabs-menu summary{height:calc(var(--tab-height) - 6px);display:inline-flex;align-items:center;gap:7px;padding:0 12px;border:1px solid transparent;border-radius:var(--radius-md) var(--radius-md) 0 0;color:var(--text-secondary);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);list-style:none;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.editor-tabs-menu summary::-webkit-details-marker{display:none}.editor-tabs-menu summary:hover,.editor-tabs-menu[open] summary{color:var(--text-bright);border-color:color-mix(in srgb,var(--border-default) 62%,transparent);background:var(--surface-hover)}.editor-tabs-menu-label{line-height:1}.editor-tabs-menu-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--portfolio-accent-cool) 18%,transparent);color:var(--portfolio-accent-cool);font-size:var(--text-2xs);line-height:1}.editor-tabs-menu-popover{position:absolute;top:calc(100% + 6px);right:6px;z-index:var(--z-popover);width:min(292px,calc(100vw - 24px));display:grid;gap:2px;padding:8px;border:1px solid var(--border-default);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-popover)}.editor-tabs-menu-item{width:100%;min-height:44px;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;padding:0 10px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);text-align:left}.editor-tabs-menu-item span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-tabs-menu-item:hover{color:var(--text-bright);background:var(--surface-hover)}.editor-tabs button:focus-visible,.editor-tabs summary:focus-visible,.explorer-tree button:focus-visible{outline:2px solid var(--accent-focus);outline-offset:-2px}.editor-pane{min-width:0;min-height:0;overflow:auto;padding:28px;background:var(--surface-editor)}.editor-document{width:min(100%,1120px);margin:0 auto}.editor-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:18px;align-items:start}.editor-hero{display:grid;gap:14px;margin-bottom:20px}.editor-hero--compact{margin-top:26px}.editor-eyebrow,.code-comment,.section-kicker{margin:0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--portfolio-accent-green);letter-spacing:0}.editor-hero h1,.detail-hero h1,.not-found-panel h1{margin:0;color:var(--text-bright);font-family:var(--font-korean);font-size:1.75rem;line-height:var(--leading-tight);letter-spacing:0;text-wrap:balance}.editor-hero p,.detail-hero p{max-width:860px;margin:0;color:var(--text-secondary);font-size:var(--text-md);line-height:var(--leading-relaxed)}.editor-hero p.editor-tagline{color:var(--text-bright);font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-snug);text-wrap:balance}.profile-highlights{display:grid;gap:12px;margin-bottom:24px}.highlight-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.highlight-card{display:grid;gap:8px;padding:16px 18px;text-align:left;border:1px solid color-mix(in srgb,var(--border-default) 82%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--portfolio-accent-cool) 6%,var(--surface-card));color:var(--text-secondary);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-standard),background var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}.highlight-card:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--portfolio-accent-cool) 12%,var(--surface-card));transform:translateY(-1px)}.highlight-card:focus-visible{outline:none;border-color:var(--accent-focus);box-shadow:0 0 0 1px var(--accent-focus)}.highlight-title{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--emphasis-key);font-weight:var(--weight-medium)}.highlight-point{font-size:var(--text-reading);line-height:var(--leading-relaxed);color:var(--text-secondary)}.highlight-cta{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--terminal-green-bright)}.profile-stack-grid,.project-card-grid,.metric-grid,.evidence-grid,.detail-grid,.link-grid{display:grid;gap:12px}.profile-stack-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline-list{display:grid;gap:12px}.timeline-card{display:grid;gap:8px;padding:16px;border:1px solid color-mix(in srgb,var(--border-default) 82%,transparent);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-card)}.timeline-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.timeline-period{margin:0;color:var(--portfolio-accent-cool);font-family:var(--font-mono);font-size:var(--text-xs)}.timeline-category{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border:1px solid color-mix(in oklab,var(--portfolio-accent-warm) 55%,transparent);border-radius:var(--radius-sm);color:var(--portfolio-accent-warm);font-size:var(--text-xs);line-height:1}.timeline-card h2{margin:0;color:var(--text-bright);font-family:var(--font-korean);font-size:var(--text-lg);line-height:var(--leading-snug)}.timeline-card p{margin:0;color:var(--text-secondary);font-size:var(--text-reading);line-height:var(--leading-relaxed)}.project-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card{display:flex;flex-direction:column;gap:12px}.project-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--border-subtle)}.project-card-links{margin-top:-2px}.recruiter-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding-top:12px;border-top:1px solid var(--border-subtle)}.recruiter-summary--card{grid-template-columns:1fr;gap:7px;padding-top:10px}.recruiter-summary-item{display:grid;min-width:0;gap:3px}.recruiter-summary-label{margin:0;color:var(--portfolio-accent-cool);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.2;text-transform:uppercase;font-weight:var(--weight-medium)}.recruiter-summary-value{margin:0;color:var(--text-secondary);font-size:var(--text-reading);line-height:var(--leading-relaxed)}.recruiter-summary--card .recruiter-summary-value{font-size:var(--text-sm)}.proof-preview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding-top:12px;border-top:1px solid var(--border-subtle)}.proof-preview-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0}.proof-preview-item{display:grid;min-width:0;gap:3px}.proof-preview-label{color:var(--text-faint);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.2;text-transform:uppercase}.proof-preview-value{color:var(--text-bright);font-family:var(--font-mono);font-size:var(--text-md);font-weight:var(--weight-semibold);line-height:var(--leading-snug)}.proof-preview-link{align-self:center}.metric-grid,.evidence-grid,.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-card,.detail-section,.code-like-section,.evidence-card,.not-found-panel{border:1px solid color-mix(in srgb,var(--border-default) 82%,transparent);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-card)}.portfolio-card,.detail-section,.code-like-section{padding:16px}.portfolio-card h2,.portfolio-card h3,.detail-section h2,.code-like-section h2,.evidence-card h3{margin:0 0 10px;font-family:var(--font-mono);font-size:1.125rem;line-height:var(--leading-snug);color:var(--text-bright);letter-spacing:0}.portfolio-card p,.detail-section p,.code-like-section p,.evidence-card p,.not-found-panel p{margin:0;color:var(--text-secondary);font-size:var(--text-reading);line-height:var(--leading-relaxed)}.portfolio-list{display:grid;gap:8px;margin:10px 0 0;padding:0;list-style:none}.portfolio-list li{position:relative;padding-left:16px;color:var(--text-secondary);font-size:var(--text-reading);line-height:var(--leading-relaxed)}.portfolio-list li:before{content:"";position:absolute;left:0;top:.72em;width:6px;height:6px;border-radius:50%;background:var(--portfolio-accent-green)}.badge-row{display:flex;flex-wrap:wrap;gap:8px}.project-link-list{display:flex;flex-wrap:wrap;align-items:center;gap:7px;min-width:0}.project-link-list--overview{gap:6px}.project-link-chip{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0;max-width:170px;min-height:32px;padding:0 9px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:color-mix(in srgb,var(--gray-0) 4%,transparent);color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);line-height:1.2;text-decoration:none;transition:background var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.project-link-chip span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-link-chip:visited{color:color-mix(in srgb,var(--link-visited) 74%,var(--text-secondary))}.project-link-chip:hover{color:var(--text-bright);border-color:var(--border-strong);background:var(--surface-hover);text-decoration:none}.project-link-chip:focus-visible{outline:none;border-color:var(--accent-focus);box-shadow:0 0 0 1px var(--accent-focus)}.project-link-chip--primary{border-color:color-mix(in srgb,var(--portfolio-accent-green) 32%,transparent);background:color-mix(in srgb,var(--portfolio-accent-green) 9%,transparent);color:var(--terminal-green-bright)}.project-link-chip--primary:visited{color:color-mix(in srgb,var(--terminal-green-bright) 78%,var(--link-visited))}.project-link-chip--primary:hover{border-color:color-mix(in srgb,var(--portfolio-accent-green) 54%,transparent);background:color-mix(in srgb,var(--portfolio-accent-green) 16%,transparent);color:var(--terminal-green-bright)}.project-card-link,.portfolio-link-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:0 13px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.project-card-link span,.portfolio-link-button span{min-width:0;overflow:hidden;text-overflow:ellipsis}.project-card-link:hover,.portfolio-link-button:hover{color:var(--text-bright);border-color:var(--border-strong);background:var(--surface-hover);text-decoration:none}.project-card-link:focus-visible,.portfolio-link-button:focus-visible{outline:none;border-color:var(--accent-focus);box-shadow:0 0 0 1px var(--accent-focus)}.project-card-link--primary,.portfolio-link-button--primary{border-color:color-mix(in srgb,var(--portfolio-accent-green) 38%,transparent);background:color-mix(in srgb,var(--portfolio-accent-green) 12%,transparent);color:var(--terminal-green-bright)}.project-card-link--primary:hover,.portfolio-link-button--primary:hover{border-color:color-mix(in srgb,var(--portfolio-accent-green) 60%,transparent);background:color-mix(in srgb,var(--portfolio-accent-green) 20%,transparent);color:var(--terminal-green-bright)}.project-card-meta,.detail-meta,.metric-value,.ownership-note{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.compact-project{display:grid;gap:14px}.compact-project-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px}.project-overview-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:flex-start;gap:8px;max-width:min(420px,42vw)}.project-overview-actions .project-link-list{justify-content:flex-end}.compact-project-title{min-width:0}.compact-project-title h2{margin:0 0 4px;color:var(--text-bright);font-family:var(--font-korean);font-size:var(--text-xl);line-height:var(--leading-snug)}.code-like-section{display:grid;gap:10px}.section-heading{margin:0;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--portfolio-accent-green);letter-spacing:0}.code-map{display:grid;gap:8px}.code-map-row{display:grid;grid-template-columns:minmax(118px,.34fr) minmax(0,1fr);gap:12px;align-items:baseline;min-width:0}.code-map-key{font-family:var(--font-mono);color:var(--syntax-property);font-size:var(--text-md);font-weight:var(--weight-medium);line-height:var(--leading-normal)}.code-map-value{min-width:0;color:var(--text-secondary);font-size:var(--text-reading);line-height:var(--leading-relaxed)}.terminal-launcher{position:fixed;right:24px;bottom:40px;z-index:var(--z-popover);display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--portfolio-accent-green);box-shadow:var(--shadow-popover);cursor:pointer;transition:transform var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),background var(--dur-fast) var(--ease-standard)}.terminal-launcher:hover{transform:translateY(-2px);border-color:var(--accent-focus);background:var(--surface-active)}.terminal-launcher:focus-visible{outline:2px solid var(--accent-focus);outline-offset:2px}.terminal-launcher-hint{position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);padding:4px 7px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--gray-100);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-standard)}.terminal-launcher:hover .terminal-launcher-hint,.terminal-launcher:focus-visible .terminal-launcher-hint{opacity:1}.terminal-panel{position:fixed;right:24px;bottom:96px;z-index:var(--z-popover);width:min(560px,calc(100vw - 32px));height:min(380px,calc(100svh - 140px));min-height:0;display:grid;grid-template-rows:42px minmax(0,1fr) 46px;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:#0d1117;box-shadow:0 24px 70px #0000008f,0 0 0 1px #ffffff0a;animation:terminal-rise var(--dur-base) var(--ease-out)}@keyframes terminal-rise{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.terminal-titlebar{display:flex;align-items:center;gap:10px;padding:0 14px 0 16px;border-bottom:1px solid #21262d;background:#161b22}.terminal-window-dots{display:inline-flex;gap:7px;align-items:center}.terminal-dot{width:12px;height:12px;flex:none;border-radius:var(--radius-pill)}.terminal-dot--red{background:#ff5f57}.terminal-dot--yellow{background:#ffbd2e}.terminal-dot--green{background:#28c840}.terminal-title{min-width:0;flex:1;overflow:hidden;color:#8b949e;font-family:var(--font-terminal);font-size:12px;line-height:1;text-overflow:ellipsis;white-space:nowrap}.terminal-close,.modal-close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}.terminal-close:hover,.modal-close:hover{color:var(--text-bright);background:var(--surface-active)}.terminal-close:focus-visible,.modal-close:focus-visible{outline:2px solid var(--accent-focus);outline-offset:1px}.terminal-scroll{min-height:0;overflow:auto;padding:16px 20px 10px;font-family:var(--font-terminal);font-size:13px;line-height:1.65;color:#c9d1d9;background:#0d1117}.terminal-scroll::-webkit-scrollbar{width:5px}.terminal-scroll::-webkit-scrollbar-thumb{border-radius:var(--radius-pill);background:#30363d}.terminal-entry{margin-bottom:12px}.terminal-command-line{display:flex;gap:8px;align-items:baseline;min-width:0}.terminal-prompt{flex:none;color:#56d364;font-family:var(--font-terminal);white-space:nowrap}.terminal-command{min-width:0;color:#79c0ff;overflow-wrap:anywhere}.terminal-output{margin:2px 0 0;color:#c9d1d9;white-space:pre-wrap;overflow-wrap:anywhere}.terminal-output--error{color:#ff7b72}.terminal-output--muted{color:#8b949e}.terminal-form{display:flex;align-items:center;gap:8px;min-width:0;padding:10px 20px 14px;border-top:1px solid #21262d;background:#0d1117}.terminal-input{flex:1;width:auto;height:24px;min-width:0;border:0;outline:0;background:transparent;color:#c9d1d9;caret-color:#79c0ff;font-family:var(--font-terminal);font-size:13px}.status-bar{display:flex;align-items:center;gap:10px;min-width:0;height:var(--statusbar-height);padding:0 10px;overflow:hidden;background:var(--statusbar-bg);color:var(--statusbar-fg);font-family:var(--font-chrome);font-size:var(--text-2xs)}.status-bar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-spacer{flex:1}.project-detail-page{min-height:100svh;padding:28px 18px;background:var(--surface-editor)}.detail-shell{width:min(1180px,100%);margin:0 auto;display:grid;gap:16px}.detail-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-home-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:0;border-radius:var(--radius-md);text-decoration:none}.detail-home-name{font-family:var(--font-korean);font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--text-bright)}.detail-home-role{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-muted)}.detail-back-link{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--border-default);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);text-decoration:none;transition:border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),background var(--dur-fast) var(--ease-standard)}.detail-back-link:hover{border-color:var(--border-strong);background:var(--surface-hover);color:var(--text-bright)}.detail-home-link:focus-visible,.detail-back-link:focus-visible{outline:2px solid var(--accent-focus);outline-offset:2px}.detail-hero{display:grid;gap:12px;padding:22px;border:1px solid color-mix(in srgb,var(--border-default) 82%,transparent);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-card)}.detail-section{display:grid;gap:12px}.detail-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.decision-card,.problem-card,.star-card,.metric-card{display:grid;gap:8px;padding:12px;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-panel)}.decision-card h3,.problem-card h3,.star-card h3,.metric-card h3{margin:0;color:var(--text-bright);font-family:var(--font-mono);font-size:var(--text-md);line-height:var(--leading-snug)}.evidence-card{overflow:hidden;min-width:0}.evidence-media{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:190px;max-height:min(420px,54svh);aspect-ratio:16 / 9;overflow:hidden;background:var(--surface-panel);border-bottom:1px solid var(--border-subtle);cursor:zoom-in}.evidence-media img{max-width:100%;max-height:100%;width:auto;height:auto;display:block;object-fit:contain;transition:transform var(--dur-fast) var(--ease-standard)}.evidence-media:hover img,.evidence-media:focus-visible img{transform:scale(1.015)}.evidence-media:focus-visible{outline:2px solid var(--accent-focus);outline-offset:-2px}.evidence-zoom-hint{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--gray-900) 72%,transparent);color:var(--text-bright);font-family:var(--font-mono);font-size:var(--text-2xs);opacity:0;transition:opacity var(--dur-fast) var(--ease-standard);pointer-events:none}.evidence-media:hover .evidence-zoom-hint,.evidence-media:focus-visible .evidence-zoom-hint{opacity:1}.lightbox-overlay{position:fixed;inset:0;z-index:var(--z-modal, 1000);display:flex;align-items:center;justify-content:center;padding:4vmin;background:color-mix(in srgb,var(--gray-900) 88%,transparent);backdrop-filter:blur(2px)}.lightbox-close{position:absolute;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--gray-900) 60%,transparent);color:var(--text-bright);cursor:pointer}.lightbox-close:hover{border-color:var(--border-strong);background:var(--surface-hover)}.lightbox-close:focus-visible{outline:2px solid var(--accent-focus);outline-offset:2px}.lightbox-figure{margin:0;display:grid;gap:12px;justify-items:center;max-width:100%;max-height:100%}.lightbox-image{max-width:92vw;max-height:80vh;width:auto;height:auto;object-fit:contain;border-radius:var(--radius-md);background:var(--surface-panel)}.lightbox-caption{display:grid;gap:4px;max-width:min(640px,92vw);text-align:center;font-size:var(--text-reading);line-height:var(--leading-relaxed);color:var(--text-secondary)}.lightbox-caption strong{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-bright)}.evidence-body{display:grid;gap:8px;padding:12px}.architecture-diagram{width:100%;height:100%;min-width:0;margin:0;display:flex;align-items:center;justify-content:center}.architecture-diagram img{width:auto;max-width:100%;max-height:100%;height:auto;border-radius:var(--radius-md);background:var(--surface-panel)}.contact-links{display:flex;flex-wrap:wrap;gap:16px}.modal-overlay{position:fixed;inset:0;z-index:var(--z-modal);display:grid;place-items:start center;padding:clamp(16px,5vh,56px) 16px;overflow-y:auto;background:var(--surface-overlay);animation:modal-fade var(--dur-fast) var(--ease-standard)}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}.modal-panel{width:min(1100px,100%);display:grid;grid-template-rows:auto minmax(0,1fr);max-height:calc(100svh - clamp(32px,10vh,112px));overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-editor);box-shadow:var(--shadow-window);outline:none;animation:terminal-rise var(--dur-base) var(--ease-out)}.modal-header{display:flex;align-items:center;gap:10px;height:44px;padding:0 12px 0 16px;background:var(--surface-titlebar);border-bottom:1px solid var(--border-subtle)}.modal-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary)}.modal-header .modal-close{margin-left:auto;width:28px;height:28px}.modal-body{min-height:0;overflow-y:auto;padding:20px;background:var(--surface-editor)}.detail-shell--modal{width:100%;margin:0}.detail-shell--modal .detail-hero{padding:16px}.portfolio-not-found{min-height:100svh;display:grid;place-items:center;padding:20px}.not-found-panel{width:min(520px,100%);display:grid;gap:12px;padding:22px}@media(max-width:1080px){.portfolio-shell{padding:0}.ide-window{height:100svh;border-radius:0;border-left:0;border-right:0}.ide-body{grid-template-columns:var(--activitybar-width) 220px minmax(0,1fr)}.editor-grid,.project-card-grid,.evidence-grid,.detail-grid,.recruiter-summary,.proof-preview,.proof-preview-list{grid-template-columns:1fr}}@media(max-width:760px){:root{--titlebar-height: 48px;--tab-height: 44px;--statusbar-height: 28px;--row-height: 44px}.ide-titlebar{grid-template-columns:56px minmax(0,1fr) auto}.title-actions{display:none}.nav-toggle{display:inline-flex;width:44px;height:44px}.ide-body{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr)}.activity-bar{display:none}.explorer{position:fixed;top:var(--titlebar-height);bottom:var(--statusbar-height);left:0;z-index:var(--z-modal);width:min(280px,82vw);transform:translate(-100%);border-right:1px solid var(--border-default);box-shadow:var(--shadow-popover);transition:transform var(--dur-base) var(--ease-out)}.explorer--open{transform:translate(0)}.nav-backdrop{display:block;position:fixed;inset:var(--titlebar-height) 0 var(--statusbar-height) 0;z-index:calc(var(--z-modal) - 1);background:var(--surface-overlay)}.editor-area{grid-template-rows:var(--tab-height) minmax(0,1fr)}.editor-tabs{gap:0;padding:0}.editor-tab,.editor-tabs-menu summary{height:var(--tab-height);border-radius:0}.editor-pane{padding:20px 14px 28px}.editor-tabs-menu summary,.editor-tabs-menu-item,.project-link-chip,.project-card-link,.portfolio-link-button{min-height:44px}.editor-tabs-menu-popover{right:8px;max-height:min(360px,calc(100svh - 130px));overflow:auto}.terminal-launcher{right:16px;bottom:32px}.terminal-panel{right:16px;left:16px;bottom:104px;width:auto;height:min(360px,calc(100svh - 172px));grid-template-rows:42px minmax(0,1fr) 46px}.terminal-scroll,.terminal-input,.terminal-prompt{font-size:12px}.terminal-form{padding-inline:16px}.profile-stack-grid,.metric-grid,.code-map-row{grid-template-columns:1fr}.project-detail-page{padding:0 10px 18px;background:#0f1318}.detail-shell{gap:12px}.detail-topbar{margin:0 -10px;padding:8px 12px;background:var(--surface-titlebar);border-bottom:1px solid var(--border-subtle)}.detail-home-link{overflow:hidden}.detail-home-name,.detail-home-role{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-hero,.detail-section{border-radius:var(--radius-xl)}}@media(max-width:520px){.editor-tab-list .editor-tab:not(.editor-tab--active){display:none}.editor-tab{max-width:calc(100vw - 112px);flex:1}.editor-tabs-menu-label{display:none}.explorer-tree{grid-template-columns:1fr}.editor-hero h1,.detail-hero h1,.not-found-panel h1{font-size:var(--text-xl)}.compact-project-header,.detail-section-header{grid-template-columns:1fr}.project-overview-actions{justify-content:flex-start;max-width:100%}.project-overview-actions .project-link-list{justify-content:flex-start}.project-link-chip{max-width:100%}.detail-topbar{flex-wrap:wrap}.detail-home-link{flex:1 1 min(210px,100%)}.detail-back-link{flex:none}}
