:root{--container:1200px;--gutter:24px;--section-y:clamp(96px,12vw,180px);--bg:#09090b;--surface:#121214;--surface-2:#18181b;--border:#27272a;--border-strong:#3f3f46;--text:#fafafa;--text-2:#a1a1aa;--text-3:#8b8b95;--accent:#4a90e2;--chip:#1976d2;--chip-text:#fafafa;--btn:#3a3a3f;--gold:#eab308;--green:#22c55e;--font-mono:"Noto Sans Mono","Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",monospace;--fs-hero:clamp(3.4rem,10vw,6rem);--fs-h1:clamp(2rem,4.6vw,3.5rem);--fs-body:1rem;--fs-sm:0.9rem;--fs-xs:0.8rem;--ease:cubic-bezier(0.22,0.61,0.36,1)}*,:after,:before{box-sizing:border-box}*{margin:0;padding:0}html{color-scheme:dark;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#09090b;background:var(--bg);color:#fafafa;color:var(--text);font-family:Noto Sans Mono,Pretendard Variable,Pretendard,-apple-system,Apple SD Gothic Neo,Malgun Gothic,monospace;font-family:var(--font-mono);font-size:1rem;font-size:var(--fs-body);line-height:1.7}#root{min-height:100vh}img{max-width:100%}a,button{color:inherit}button{font:inherit}:focus-visible{border-radius:4px;outline:2px solid #4a90e2;outline:2px solid var(--accent);outline-offset:3px}::selection{background:#4a90e24d}.section{padding:calc(clamp(96px, 12vw, 180px)/2) 0;padding:calc(var(--section-y)/2) 0}.container{margin:0 auto;max-width:1200px;max-width:var(--container);padding:0 24px;padding:0 var(--gutter);width:100%}.section-title{color:#fafafa;color:var(--text);font-size:clamp(2rem,4.6vw,3.5rem);font-size:var(--fs-h1);font-weight:400;letter-spacing:-.01em;margin-bottom:clamp(36px,5vw,64px)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:0ms;transition-delay:var(--delay,0ms)}.reveal.is-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}.App{overflow-x:clip}.App,.hero{min-height:100vh;position:relative}.hero{align-items:center;display:flex;min-height:100svh}.hero-name{color:var(--text);font-size:var(--fs-hero);font-weight:800;letter-spacing:-.01em;line-height:1.04}.hero-role{color:var(--accent);font-size:clamp(1.1rem,2.2vw,1.5rem);font-weight:600;margin-top:34px}.hero-tagline{color:var(--text-2);font-size:var(--fs-sm);margin-top:12px;word-break:keep-all}.hero-scroll{animation:heroBob 2.4s var(--ease) infinite;border:1px solid var(--border-strong);border-radius:50%;bottom:44px;color:var(--text-2);display:grid;height:42px;left:50%;place-items:center;position:absolute;text-decoration:none;transform:translateX(-50%);transition:color .18s var(--ease),border-color .18s var(--ease);width:42px}.hero-scroll:hover{border-color:var(--accent);color:var(--accent)}@keyframes heroBob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,7px)}}.profile-grid{grid-gap:clamp(32px,5vw,72px);align-items:start;display:grid;gap:clamp(32px,5vw,72px);grid-template-columns:280px minmax(0,1fr)}.profile-photo{border:1px solid var(--border);border-radius:12px;margin:0;overflow:hidden}.profile-photo img{aspect-ratio:4/5;display:block;object-fit:cover;width:100%}.profile-rows{display:grid}.profile-row{grid-gap:18px;border-bottom:1px solid var(--border);display:grid;gap:18px;grid-template-columns:130px minmax(0,1fr);padding:17px 4px}.profile-row:first-child{border-top:1px solid var(--border)}.profile-row dt{color:var(--text-3);font-size:var(--fs-sm)}.profile-row dd{color:var(--text);font-size:var(--fs-sm);margin:0;overflow-wrap:anywhere;word-break:keep-all}.profile-row dd a{text-decoration:none;transition:color .16s var(--ease)}.profile-row dd a:hover{color:var(--accent);text-decoration:underline}@media(max-width:900px){.profile-grid{grid-template-columns:1fr;max-width:520px}.profile-photo{max-width:280px}}.cert-rows{grid-column-gap:clamp(28px,4vw,64px);column-gap:clamp(28px,4vw,64px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none}.cert-row{align-items:baseline;border-bottom:1px solid var(--border);display:flex;gap:20px;justify-content:space-between;padding:16px 4px}.cert-row:nth-child(-n+2){border-top:1px solid var(--border)}.cert-name{color:var(--text);font-size:var(--fs-sm);word-break:keep-all}.cert-name small{color:var(--text-3);display:block;font-size:var(--fs-xs);margin-top:3px}.cert-kind{color:var(--gold);display:inline-block;font-style:normal;font-weight:600;letter-spacing:.08em;margin-right:10px;text-transform:uppercase}.cert-date,.cert-kind{font-size:var(--fs-xs)}.cert-date{color:var(--text-3);flex-shrink:0}@media(max-width:720px){.cert-rows{grid-template-columns:1fr}.cert-row:nth-child(-n+2){border-top:none}.cert-row:first-child{border-top:1px solid var(--border)}}.projects-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin:-28px 0 44px}.projects-count{color:var(--text-3);font-size:var(--fs-sm)}.featured-toggle{align-items:center;background:#0000;border:1px solid var(--border-strong);border-radius:8px;color:var(--text-2);cursor:pointer;display:inline-flex;font-size:var(--fs-sm);gap:8px;padding:9px 16px;transition:color .16s var(--ease),border-color .16s var(--ease),background-color .16s var(--ease)}.featured-toggle svg{color:var(--text-3);transition:color .16s var(--ease)}.featured-toggle:hover{border-color:var(--text-3);color:var(--text)}.featured-toggle.on{border-color:var(--gold);color:var(--gold)}.featured-toggle.on svg{color:var(--gold)}.projects-list{grid-gap:clamp(28px,4vw,48px);display:grid;gap:clamp(28px,4vw,48px)}.project{--pad:clamp(26px,4vw,44px);background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;padding:var(--pad);transition:border-color .2s var(--ease)}.project:hover{border-color:var(--border-strong)}.project-head{align-items:center;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:22px}.project-head h3{color:var(--text);font-size:clamp(1.5rem,3vw,2rem);font-weight:700;letter-spacing:-.01em}.badge{border-radius:999px;font-size:var(--fs-xs);font-weight:600;padding:4px 12px}.badge-accent{background:#4a90e224;border:1px solid #4a90e273;color:var(--accent)}.badge-green{background:#22c55e1f;border:1px solid #22c55e6b;color:var(--green)}.badge-gold{background:#eab3081f;border:1px solid #eab30866;color:var(--gold)}.project-periods{grid-gap:6px;display:grid;gap:6px;margin-bottom:22px}.project-periods>div{align-items:baseline;display:flex;gap:14px}.project-periods dt{color:var(--accent);flex-shrink:0;font-size:var(--fs-xs);font-weight:600;min-width:84px}.project-periods dd{color:var(--text-2);font-size:var(--fs-sm);margin:0}.project-desc{margin-bottom:22px;max-width:74ch}.project-desc p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.85;word-break:keep-all}.project-desc p+p{margin-top:10px}.project-metrics{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:22px}.project-metrics>div{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column-reverse;min-width:0;padding:14px 16px}.project-metrics dd{color:var(--accent);font-size:.98rem;font-weight:700;letter-spacing:-.01em;line-height:1.35;margin:0;overflow-wrap:anywhere;word-break:keep-all}.project-metrics dt{color:var(--text-3);font-size:var(--fs-xs);margin-top:4px;word-break:keep-all}.project-tags{display:flex;flex-wrap:wrap;gap:8px}.chip{background:var(--chip);border-radius:999px;color:var(--chip-text);font-size:.82rem;padding:5px 11px;white-space:nowrap}.project-detail{margin-top:28px}.project-roles{grid-gap:9px;display:grid;gap:9px;list-style:none;margin-bottom:30px}.project-roles li{color:var(--text-2);font-size:var(--fs-sm);line-height:1.75;padding-left:20px;position:relative;word-break:keep-all}.project-roles li:before{background:var(--accent);border-radius:50%;content:"";height:6px;left:2px;position:absolute;top:.7em;width:6px}.carousel{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:24px;overflow:hidden;position:relative}.carousel-track{display:flex;transition:transform .38s var(--ease)}.carousel-slide{aspect-ratio:16/9;flex:0 0 100%}.carousel-slide img{display:block;height:100%;object-fit:cover;width:100%}.carousel.fit-contain .carousel-slide img{background:var(--surface-2);object-fit:contain}.carousel-btn{background:#09090bb8;border:1px solid var(--border-strong);border-radius:50%;color:var(--text);cursor:pointer;display:grid;font-size:1.15rem;height:40px;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .16s var(--ease),border-color .16s var(--ease);width:40px}.carousel-btn:hover{background:#09090beb;border-color:var(--accent)}.carousel-btn.prev{left:14px}.carousel-btn.next{right:14px}.carousel-counter{background:#09090bb8;border:1px solid var(--border-strong);border-radius:999px;bottom:12px;color:var(--text-2);font-size:var(--fs-xs);padding:3px 10px;position:absolute;right:14px}.embed-shell{border-radius:12px}.embed-shell.compact{max-width:620px}.embed-shell{background:var(--surface);border:1px solid var(--border);margin-bottom:24px;overflow:hidden}.embed-bar{align-items:center;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;padding:12px 16px}.embed-bar span{color:var(--text);font-size:var(--fs-sm);font-weight:600}.embed-bar a{align-items:center;color:var(--accent);display:inline-flex;font-size:var(--fs-xs);gap:6px;text-decoration:none}.embed-bar a:hover{text-decoration:underline}.embed-frame{aspect-ratio:16/9;background:var(--surface-2);overflow:hidden;position:relative}.embed-frame iframe{border:0;display:block;left:0;position:absolute;top:0;transform-origin:top left}.video-frame{aspect-ratio:16/9;background:var(--surface-2);position:relative}.video-frame iframe{border:0;display:block;height:100%;inset:0;position:absolute;width:100%}.project-toggle{align-items:center;background:var(--surface-2);border:none;border-top:1px solid var(--border);color:var(--text-2);cursor:pointer;display:flex;font-size:var(--fs-sm);font-weight:600;gap:7px;justify-content:center;letter-spacing:.02em;margin:var(--pad) calc(var(--pad)*-1) calc(var(--pad)*-1);padding:16px;transition:color .16s var(--ease),background-color .16s var(--ease);width:calc(100% + var(--pad)*2)}.project-toggle svg{font-size:1.1rem}.project-toggle:hover{background:#1d1d21;color:var(--accent)}.project-links{display:flex;flex-wrap:wrap;gap:10px}.link-btn.primary{background:var(--chip)}.link-btn{align-items:center;background:var(--btn);border-radius:5px;color:var(--text);display:inline-flex;font-size:var(--fs-sm);font-weight:600;gap:9px;padding:10px 18px;text-decoration:none;transition:background-color .16s var(--ease),transform .16s var(--ease)}.link-btn:hover{background:var(--border-strong);transform:translateY(-2px)}@media(max-width:640px){.project-metrics{gap:8px;grid-template-columns:1fr}.carousel-btn{height:34px;width:34px}.carousel-btn.prev{left:8px}.carousel-btn.next{right:8px}}.skill-group+.skill-group{margin-top:44px}.skill-level{color:var(--text-2);font-size:1.05rem;font-weight:600;margin-bottom:18px}.skill-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(6,minmax(0,1fr))}.skill-cell{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;gap:10px;justify-content:center;padding:22px 10px;transition:opacity .6s var(--ease),transform .6s var(--ease),border-color .18s var(--ease);transition-delay:0ms;transition-delay:var(--delay,0ms)}.skill-cell:hover{border-color:var(--border-strong)}.skill-cell svg{color:var(--accent);color:var(--icon,var(--accent));font-size:34px}.skill-cell span{color:var(--text-2);font-size:var(--fs-xs);text-align:center}@media(max-width:1000px){.skill-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:560px){.skill-grid{gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.skill-cell{padding:16px 8px}.skill-cell svg{font-size:26px}}.knowledge-map .section-title{margin-bottom:12px}.knowledge-map-sub{color:var(--text-2);font-size:var(--fs-sm);margin-bottom:clamp(28px,4vw,48px);word-break:keep-all}.knowledge-map-mount{max-width:1100px}.knowledge-map .km{--km-accent:var(--accent);--km-surface:var(--surface);--km-surface-2:var(--surface-2);--km-line:var(--border);--km-line-strong:var(--border-strong);--km-text:var(--text);--km-muted:var(--text-2)}.knowledge-map a.km-bar:focus-visible,.knowledge-map a.km-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.km{--_accent:var(--km-accent,var(--accent,var(--bn-accent,#3b82f6)));--_line:var(--km-line,var(--line,var(--border,var(--bn-line,#262a33))));--_line-strong:var(--km-line-strong,var(--line-strong,var(--border-strong,var(--bn-line-strong,#343947))));--_surface:var(--km-surface,var(--surface,var(--bn-surface,#14161b)));--_surface-2:var(--km-surface-2,var(--surface-2,var(--bn-surface-2,#1b1e25)));--_text:var(--km-text,var(--text,var(--bn-text,#e6e8ee)));--_muted:var(--km-muted,var(--muted,var(--text-2,var(--bn-muted,#9aa0ad))));--_danger:var(--km-danger,var(--danger,#ef4444));--_cell:var(--km-cell,44px);--_gap:3px;--_r:2px;color:var(--_text);font-size:14px;line-height:1.5;position:relative}.km *{box-sizing:border-box}.km a{color:inherit;text-decoration:none}.km-sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.km-tiles{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 22px}.km-tile{background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);min-width:0;padding:14px 16px}.km-tile-v{font-feature-settings:"tnum";font-size:26px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.01em;line-height:1.15}.km-tile-v small{color:var(--_muted);font-size:.7em;font-weight:500;margin:0 1px}.km-tile-l{color:var(--_muted);font-size:12px;margin-top:4px}.km-tile-h{color:var(--_accent);font-size:11px;margin-left:6px}.km-compact .km-tiles{gap:6px;margin-bottom:16px}.km-compact .km-tile{padding:10px 12px}.km-compact .km-tile-v{font-size:19px}.km-compact .km-tile-l{font-size:11px;margin-top:2px}.km-compact .km-tile-h{display:none}.km-body{grid-gap:28px;align-items:start;display:grid;gap:28px;grid-template-columns:minmax(0,1fr) 280px}.km-heat-wrap{min-width:0;overflow-x:auto;padding-bottom:4px;scrollbar-color:var(--_line-strong) #0000;scrollbar-width:thin}.km-heat{border-collapse:initial;border-spacing:var(--_gap);margin:0 -3px;table-layout:auto}.km-heat th{font-weight:500;padding:0;text-align:left}.km-corner{width:1px}.km-year{max-width:var(--_cell);min-width:var(--_cell);padding-bottom:4px!important;text-align:center!important;vertical-align:bottom;width:var(--_cell)}.km-year-n{font-feature-settings:"tnum";display:block;font-size:12px;font-variant-numeric:tabular-nums;font-weight:700}.km-year-l{color:var(--_muted);font-size:10px;letter-spacing:-.02em;line-height:1.25;margin-top:2px;word-break:keep-all}.km-year-l,.km-year-l>span{display:block}.km-year-s{color:var(--_muted);display:none;font-size:9.5px;letter-spacing:-.02em;line-height:1.2}.km-topic{font-size:12.5px;padding-right:10px!important;vertical-align:middle;white-space:nowrap}.km-topic-n{color:var(--_text)}.km-topic-c{font-feature-settings:"tnum";color:var(--_muted);font-size:11px;font-variant-numeric:tabular-nums;margin-left:6px}.km-td{padding:0}.km-cell,.km-td{height:var(--_cell);width:var(--_cell)}.km-cell{background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);display:block;position:relative}.km-cell:before{background:var(--_accent);content:"";inset:0;opacity:0;opacity:var(--_a,0);position:absolute}.km-l0{--_a:0}.km-l1{--_a:0.18}.km-l2{--_a:0.34}.km-l3{--_a:0.52}.km-l4{--_a:0.74}.km-l5{--_a:1}.km-cell.km-l4,.km-cell.km-l5{border-color:var(--_accent)}a.km-cell:focus-visible,a.km-cell:hover{border-color:var(--_text);outline:1px solid var(--_text);outline-offset:1px;z-index:1}.km-legend{align-items:center;color:var(--_muted);display:flex;font-size:11px;gap:4px;margin-top:10px}.km-legend i{background:var(--_surface);border:1px solid var(--_line);border-radius:1px;display:inline-block;height:12px;position:relative;width:12px}.km-legend i:before{background:var(--_accent);content:"";inset:0;opacity:0;opacity:var(--_a,0);position:absolute}.km-legend-note{margin-left:8px}.km-bars{min-width:0}.km-bars-t{color:var(--_muted);font-size:11.5px;font-weight:600;letter-spacing:.06em;margin:0 0 10px;text-transform:uppercase}.km-bar-list{display:flex;flex-direction:column;gap:5px;list-style:none;margin:0;padding:0}.km-bar{grid-gap:8px;align-items:center;border-radius:var(--_r);display:grid;font-size:12.5px;gap:8px;grid-template-columns:124px minmax(0,1fr) 3.2ch;margin:0 -4px;padding:3px 4px}.km-bar:focus-visible,.km-bar:hover{background:var(--_surface)}.km-bar-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.km-bar-track{background:var(--_surface);border:1px solid var(--_line);border-radius:1px;display:block;height:10px;overflow:hidden}.km-bar-fill{background:var(--_accent);display:block;height:100%}.km-bar-v{font-feature-settings:"tnum";color:var(--_muted);font-size:11.5px;font-variant-numeric:tabular-nums;text-align:right}.km-tip{background:var(--_surface-2);border:1px solid var(--_line-strong);border-radius:var(--_r);box-shadow:0 6px 20px #0006;color:var(--_text);font-size:12px;left:0;line-height:1.45;max-width:280px;padding:8px 10px;pointer-events:none;position:absolute;top:0;width:-webkit-max-content;width:max-content;z-index:5}.km-tip[hidden]{display:none}.km-tip-h{font-weight:600}.km-tip-l{color:var(--_muted);margin:6px 0 0;padding-left:14px}.km-tip-l li{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.km-tip-a{color:var(--_accent);font-size:11px;margin-top:6px}.km-state{border:1px dashed var(--_line-strong);border-radius:var(--_r);color:var(--_muted);font-size:13px;margin:0;padding:20px 16px;text-align:center}.km-error .km-state{border-color:var(--_danger);color:var(--_danger)}@media (max-width:900px){.km-body{gap:22px;grid-template-columns:1fr}}@media (max-width:600px){.km{--_cell:var(--km-cell-sm,30px);--_gap:2px}.km-tiles{gap:6px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.km-tile{padding:10px 12px}.km-tile-v{font-size:20px}.km-tile-h{display:none}.km-year-n{font-size:11px}.km-year-l{display:none}.km-year-s{display:block;margin-top:1px}.km-topic{font-size:11.5px;padding-right:8px!important}.km-topic-c{font-size:10px;margin-left:4px}.km-bar{font-size:12px;grid-template-columns:104px minmax(0,1fr) 3.2ch}}.career-list{list-style:none;max-width:920px}.career-item{grid-gap:24px;border-left:1px solid var(--border-strong);display:grid;gap:24px;grid-template-columns:210px minmax(0,1fr);padding:26px 0 26px 30px;position:relative}.career-item:before{background:var(--accent);border-radius:50%;content:"";height:9px;left:-5px;position:absolute;top:36px;width:9px}.career-period{color:var(--text-3);font-size:var(--fs-xs);padding-top:3px;white-space:nowrap}.career-body h3{color:var(--text);font-size:1.05rem;font-weight:700;margin-bottom:8px;word-break:keep-all}.career-body p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.75;word-break:keep-all}@media(max-width:640px){.career-item{gap:6px;grid-template-columns:1fr;padding-left:24px}}.footer{border-top:1px solid var(--border);padding:48px 0 40px}.footer p{color:var(--text-3);font-size:var(--fs-xs);text-align:center}.side-nav{position:fixed;right:22px;top:50%;transform:translateY(-50%);z-index:100}.side-nav ul{grid-gap:2px;display:grid;gap:2px;list-style:none}.side-nav .side-nav-label em{color:var(--border-strong);font-style:normal;margin-right:6px;transition:color .16s var(--ease)}.side-nav a.active .side-nav-label em,.side-nav a:hover .side-nav-label em{color:inherit}.side-nav a{align-items:center;color:var(--text-3);display:flex;font-size:.72rem;gap:9px;justify-content:flex-end;padding:5px 8px;text-decoration:none;transition:color .16s var(--ease)}.side-nav a i{background:var(--border-strong);border-radius:50%;height:6px;order:2;transition:background-color .16s var(--ease),box-shadow .16s var(--ease);width:6px}.side-nav a:hover{color:var(--text)}.side-nav a.active{color:var(--accent)}.side-nav a.active i{background:var(--accent);box-shadow:0 0 0 3px #4a90e238}@media(max-width:1380px){.side-nav{display:none}}.binnie-fab,.binnie-panel{--bn-bg:#0b0c0f;--bn-surface:#14161b;--bn-surface-2:#1b1e26;--bn-line:#262a33;--bn-text:#e6e8ee;--bn-muted:#9aa0ad;--bn-accent:#3b82f6;--bn-accent-hover:#2f6fd6;--bn-error:#f87171;--bn-shadow:0 8px 24px #00000059}.binnie-fab{background:var(--bn-accent);border:1px solid var(--bn-accent);border-radius:4px;bottom:24px;box-shadow:0 10px 28px #00000073;color:#fff;cursor:pointer;display:grid;font:inherit;height:64px;padding:0;place-items:center;position:fixed;right:24px;transition:background .15s,border-color .15s;width:64px;z-index:9999}.binnie-fab:not(.is-open){animation:binnie-float 3.4s ease-in-out infinite}.binnie-fab .binnie-bot-wink .binnie-eye-r{animation:binnie-wink 5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes binnie-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes binnie-wink{0%,88%,to{transform:scaleY(1)}91%,95%{transform:scaleY(.12)}}@media (prefers-reduced-motion:reduce){.binnie-fab .binnie-eye-r,.binnie-fab:not(.is-open){animation:none}}.binnie-fab:hover{background:var(--bn-accent-hover);border-color:var(--bn-accent-hover)}.binnie-fab:focus-visible{outline:2px solid var(--bn-text);outline-offset:2px}.binnie-fab.is-open{background:var(--bn-surface);border-color:var(--bn-line);color:var(--bn-text)}.binnie-fab.is-open:hover{background:var(--bn-surface-2)}.binnie-fab svg{display:block;height:32px;width:32px}.binnie-fab.is-open svg{height:26px;width:26px}.binnie-fab-dot{background:var(--bn-text);border:2px solid var(--bn-bg);border-radius:1px;box-sizing:initial;height:8px;position:absolute;right:7px;top:7px;width:8px}.binnie-panel{animation:binnie-in .16s ease-out;background:var(--bn-bg);border:1px solid var(--bn-line);border-radius:4px;bottom:86px;box-shadow:var(--bn-shadow);color:var(--bn-text);display:flex;flex-direction:column;font-size:14px;height:min(620px,calc(100vh - 110px));line-height:1.6;overflow:hidden;position:fixed;right:22px;width:min(400px,calc(100vw - 44px));z-index:9999}@keyframes binnie-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.binnie-head{align-items:center;background:var(--bn-bg);border-bottom:1px solid var(--bn-line);display:flex;gap:10px;padding:12px 12px 12px 14px}.binnie-avatar{background:var(--bn-accent);border-radius:4px;color:#fff;display:grid;flex:none;height:32px;place-items:center;width:32px}.binnie-avatar svg{display:block;height:20px;width:20px}.binnie-avatar.sm{background:var(--bn-surface);border:1px solid var(--bn-line);color:var(--bn-accent);height:24px;margin-top:2px;width:24px}.binnie-avatar.sm svg{height:15px;width:15px}.binnie-title{flex:1 1;font-size:15px;font-weight:700;letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.binnie-close{background:#0000;border:1px solid var(--bn-line);border-radius:4px;color:var(--bn-muted);cursor:pointer;display:grid;flex:none;height:32px;padding:0;place-items:center;transition:background .15s,color .15s;width:32px}.binnie-close:hover{background:var(--bn-surface);color:var(--bn-text)}.binnie-close svg{display:block;height:16px;width:16px}.binnie-list{display:flex;flex:1 1;flex-direction:column;gap:12px;overflow-y:auto;padding:14px;scrollbar-color:var(--bn-line) #0000;scrollbar-width:thin}.binnie-row{align-items:flex-start;display:flex;gap:8px}.binnie-row.user{justify-content:flex-end}.binnie-msg{border-radius:4px;max-width:86%;overflow-wrap:anywhere;padding:9px 12px;word-break:break-word}.binnie-msg.user{background:var(--bn-accent);color:#fff;white-space:pre-wrap}.binnie-msg.assistant{background:var(--bn-surface);border:1px solid var(--bn-line);max-width:calc(100% - 32px)}.binnie-msg.assistant.error{border-color:var(--bn-error);color:var(--bn-error)}.binnie-msg.assistant>*{margin:.6em 0}.binnie-msg.assistant>:first-child{margin-top:0}.binnie-msg.assistant>:last-child{margin-bottom:0}.binnie-msg h3,.binnie-msg h4{color:var(--bn-text);font-weight:700;line-height:1.4;margin:1.1em 0 .3em}.binnie-msg h3{border-bottom:1px solid var(--bn-line);font-size:1.05em;padding-bottom:.25em}.binnie-msg h4{font-size:1em}.binnie-msg p.binnie-sub{font-weight:700;margin:1em 0 .25em}.binnie-msg strong{color:var(--bn-text);font-weight:700}.binnie-msg ol,.binnie-msg ul{margin:.4em 0;padding-left:1.3em}.binnie-msg li{margin:.12em 0;padding-left:.1em}.binnie-msg li::marker{color:var(--bn-muted)}.binnie-msg code{background:var(--bn-bg);border:1px solid var(--bn-line);border-radius:3px;font-size:.9em;padding:0 5px}.binnie-msg pre{background:var(--bn-bg);border:1px solid var(--bn-line);border-radius:4px;font-size:12px;line-height:1.55;overflow-x:auto;padding:10px 12px}.binnie-msg pre code{background:#0000;border:0;font-size:inherit;padding:0}.binnie-msg a{color:var(--bn-accent);text-decoration:underline;text-underline-offset:2px}.binnie-table{border:1px solid var(--bn-line);border-radius:4px;overflow-x:auto}.binnie-msg table{border-collapse:collapse;font-size:12.5px;line-height:1.45;width:100%}.binnie-msg td,.binnie-msg th{border:1px solid var(--bn-line);overflow-wrap:normal;padding:6px 10px;text-align:left;vertical-align:top;word-break:keep-all}.binnie-msg th{background:var(--bn-surface-2);font-weight:600;white-space:nowrap}.binnie-msg tr>:first-child{border-left:0}.binnie-msg tr>:last-child{border-right:0}.binnie-msg thead tr>*{border-top:0}.binnie-msg tbody tr:last-child>*{border-bottom:0}.binnie-meta{display:flex;flex-direction:column;gap:6px;padding-left:32px}.binnie-status{align-items:center;color:var(--bn-muted);display:flex;font-size:12px;gap:8px}.binnie-dots{display:inline-flex;gap:4px}.binnie-dots i{animation:binnie-blink 1.2s infinite;background:var(--bn-accent);border-radius:50%;height:5px;width:5px}.binnie-dots i:nth-child(2){animation-delay:.2s}.binnie-dots i:nth-child(3){animation-delay:.4s}@keyframes binnie-blink{0%,80%,to{opacity:.25}40%{opacity:1}}.binnie-tools{display:flex;flex-wrap:wrap;gap:6px}.binnie-tools span{background:var(--bn-surface);border:1px solid var(--bn-line);border-radius:3px;color:var(--bn-muted);font-size:11.5px;padding:2px 8px}.binnie-suggest{display:flex;flex-direction:column;gap:6px;padding-left:32px}.binnie-suggest-label{align-items:center;color:var(--bn-accent);display:inline-flex;font-size:11.5px;font-weight:600;gap:6px;letter-spacing:.02em}.binnie-suggest-label svg{height:13px;width:13px}.binnie-suggest-list{display:flex;flex-wrap:wrap;gap:6px}.binnie-suggest button{align-items:center;background:#0000;border:1px dashed #3b82f699;border-radius:3px;color:var(--bn-text);cursor:pointer;display:inline-flex;font:inherit;font-size:12.5px;gap:7px;line-height:1.4;padding:6px 10px 6px 7px;text-align:left;transition:border-color .15s,background .15s}.binnie-suggest button .binnie-q{background:var(--bn-accent);border-radius:2px;color:#fff;display:grid;flex:none;font-size:10px;font-weight:700;height:16px;place-items:center;width:16px}.binnie-suggest button:hover{background:#3b82f61f;border-color:var(--bn-accent);border-style:solid}.binnie-form{align-items:center;background:var(--bn-bg);border-top:1px solid var(--bn-line);display:flex;gap:8px;padding:10px 12px}.binnie-form input{background:var(--bn-surface);border:1px solid var(--bn-line);border-radius:4px;color:var(--bn-text);flex:1 1;font:inherit;font-size:14px;height:38px;min-width:0;outline:none;padding:0 12px;transition:border-color .15s}.binnie-form input:focus{border-color:var(--bn-accent)}.binnie-form input::placeholder{color:var(--bn-muted)}.binnie-form input:disabled{opacity:.6}.binnie-form button{background:var(--bn-accent);border:1px solid var(--bn-accent);border-radius:4px;color:#fff;cursor:pointer;display:grid;flex:none;height:38px;padding:0;place-items:center;transition:background .15s,border-color .15s;width:38px}.binnie-form button:hover:not(:disabled){background:var(--bn-accent-hover);border-color:var(--bn-accent-hover)}.binnie-form button:disabled{background:var(--bn-surface);border-color:var(--bn-line);color:var(--bn-muted);cursor:default}.binnie-form button svg{display:block;height:16px;width:16px}@media (max-width:480px){.binnie-panel{border:0;border-radius:0;inset:0;bottom:0;box-shadow:none;height:auto;right:0;width:auto}.binnie-fab{bottom:16px;right:14px}.binnie-fab.is-open{display:none}.binnie-meta,.binnie-suggest{padding-left:0}.binnie-avatar.sm{display:none}.binnie-msg.assistant{max-width:100%}}.binnie-msg.assistant{max-width:calc(100% - 34px)}.binnie-ui .bui-block{margin:10px 0}.bui-block{--b-accent:var(--accent,var(--bn-accent,#3b82f6));--b-line:var(--line,var(--bn-line,#262a33));--b-surface:var(--surface,var(--bn-surface,#14161b));--b-surface2:var(--surface-2,var(--bn-surface-2,#1b1e26));--b-text:var(--text,var(--bn-text,#e6e8ee));--b-muted:var(--muted,var(--bn-muted,#9aa0ad));color:var(--b-text);margin:12px 0}.bui-block:first-child{margin-top:4px}.bui-block:last-child{margin-bottom:4px}.bui-block ol,.bui-block p,.bui-block ul{margin:.35em 0}.bui-block ol,.bui-block ul{padding-left:1.2em}.bui-block a{color:var(--b-accent);text-decoration:none}.bui-block code{background:var(--b-surface2);border-radius:3px;font-size:.9em;padding:1px 5px}.bui-h{font-weight:700;letter-spacing:-.01em;margin:0}.bui-h1{font-size:1.35em}.bui-h2{color:var(--b-accent);font-size:1.12em}.bui-h3{font-size:1em}.bui-heading+.bui-block{margin-top:6px}.bui-stats{grid-gap:8px;display:grid;gap:8px}.bui-cols-1{grid-template-columns:1fr}.bui-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-stat{background:var(--b-surface2);border:1px solid var(--b-line);border-radius:4px;padding:10px 12px}.bui-stat-v{font-size:1.25em;font-weight:700;line-height:1.2}.bui-stat-l{color:var(--b-muted);font-size:.82em;margin-top:3px}.bui-stat-h{color:var(--b-accent);font-size:.78em;margin-top:2px}.bui-cards{grid-gap:10px;display:grid;gap:10px}.bui-card{background:var(--b-surface2);border:1px solid var(--b-line);border-radius:4px;display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 14px}.bui-card-t{font-size:1em;font-weight:700;margin:0}.bui-card-s{color:var(--b-muted);font-size:.82em;margin-top:2px}.bui-card-b{font-size:.93em}.bui-card-b p{margin:.25em 0}.bui-meta{grid-gap:3px 10px;display:grid;font-size:.85em;gap:3px 10px;grid-template-columns:auto 1fr;margin:0}.bui-meta>div{display:contents}.bui-meta dt{color:var(--b-muted);white-space:nowrap}.bui-meta dd{margin:0}.bui-tags{display:flex;flex-wrap:wrap;gap:5px}.bui-tag{background:var(--b-surface);border:1px solid var(--b-line);border-radius:3px;color:var(--b-muted);font-size:.76em;padding:2px 7px}.bui-links-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.bui-btn{border:1px solid var(--b-accent);border-radius:3px;color:var(--b-accent)!important;display:inline-block;font-size:.82em;padding:5px 10px}.bui-btn:hover{background:var(--b-accent);color:#fff!important}.bui-tablewrap{overflow-x:auto}.bui-table{border-collapse:collapse;font-size:.9em;width:100%}.bui-table caption{color:var(--b-muted);font-size:.85em;padding:0 0 6px;text-align:left}.bui-table td,.bui-table th{border:1px solid var(--b-line);padding:6px 10px;text-align:left;vertical-align:top}.bui-table th{background:var(--b-surface2);font-weight:600;white-space:nowrap}.bui-compare th[scope=row]{background:var(--b-surface);color:var(--b-muted);font-weight:500}.bui-timeline{border-left:2px solid var(--b-line);display:flex;flex-direction:column;gap:12px;list-style:none;margin:0;padding:0 0 0 14px}.bui-tl-item{position:relative}.bui-tl-item:before{background:var(--b-accent);border-radius:1px;content:"";height:8px;left:-19px;position:absolute;top:6px;width:8px}.bui-tl-date{font-feature-settings:"tnum";color:var(--b-accent);font-size:.8em;font-variant-numeric:tabular-nums}.bui-tl-title{font-weight:600}.bui-tl-text{color:var(--b-text);font-size:.92em}.bui-tl-text p{margin:.2em 0}.bui-list{margin:0}.bui-list li{margin:.18em 0}.bui-list-check{list-style:none;padding-left:0}.bui-list-check li:before{color:var(--b-accent);content:"✓ ";font-weight:700}.bui-chips{display:flex;flex-wrap:wrap;gap:6px}.bui-chip{background:var(--b-surface2);border:1px solid var(--b-line);border-radius:3px;font-size:.85em;padding:4px 10px}.bui-chip-accent{border-color:var(--b-accent);color:var(--b-accent)}.bui-chip-ok{border-color:#22c55e;color:#4ade80}.bui-chip-warn{border-color:#f59e0b;color:#fbbf24}.bui-callout{background:var(--b-surface2);border:1px solid var(--b-line);border-left:3px solid var(--b-accent);border-radius:4px;font-size:.95em;padding:10px 12px}.bui-callout-ok{border-left-color:#22c55e}.bui-callout-warn{border-left-color:#f59e0b}.bui-progress{display:flex;flex-direction:column;gap:8px}.bui-prog-head{display:flex;font-size:.88em;justify-content:space-between;margin-bottom:4px}.bui-prog-hint{color:var(--b-muted)}.bui-prog-bar{background:var(--b-surface2);border:1px solid var(--b-line);border-radius:2px;height:8px;overflow:hidden}.bui-prog-fill{background:var(--b-accent);height:100%}.bui-links{grid-gap:6px;display:grid;gap:6px}.bui-link{background:var(--b-surface2);border:1px solid var(--b-line);border-radius:4px;display:flex;flex-direction:column;gap:2px;padding:9px 12px}.bui-link:hover{border-color:var(--b-accent)}.bui-link-l{font-weight:600}.bui-link-d{color:var(--b-muted);font-size:.85em}.bui-divider{border:0;border-top:1px solid var(--b-line);margin:6px 0}.bui-columns{grid-gap:12px;display:grid;gap:12px}.bui-col{min-width:0}.bui-pagecard{background:#1b1e26;background:var(--surface-2,var(--bn-surface-2,#1b1e26));border:1px solid #3b82f6;border:1px solid var(--accent,var(--bn-accent,#3b82f6));border-radius:4px;color:#e6e8ee!important;color:var(--text,var(--bn-text,#e6e8ee))!important;display:block;margin:10px 0 4px;padding:12px 14px;text-decoration:none}.bui-pagecard:hover{background:#3b82f61f}.bui-pagecard-k{color:#3b82f6;color:var(--accent,var(--bn-accent,#3b82f6));font-size:.74em;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.bui-pagecard-t{font-weight:700;margin-top:3px}.bui-pagecard-s{color:#9aa0ad;color:var(--muted,var(--bn-muted,#9aa0ad));font-size:.88em;margin-top:3px}.bui-pagecard-a{color:#3b82f6;color:var(--accent,var(--bn-accent,#3b82f6));font-size:.8em;margin-top:8px}@media (max-width:560px){.bui-cols-2,.bui-cols-3,.bui-cols-4{grid-template-columns:1fr 1fr}.bui-cards.bui-cols-2,.bui-cards.bui-cols-3,.bui-columns{grid-template-columns:1fr}.bui-stats.bui-cols-3,.bui-stats.bui-cols-4{grid-template-columns:1fr 1fr}}
/*# sourceMappingURL=main.54d8565d.css.map*/