.error-fallback{display:flex;align-items:center;justify-content:center;min-height:400px;padding:2rem;background:linear-gradient(135deg,#fef2f2,#fff5f5);border-radius:12px;margin:2rem auto;max-width:800px}.error-fallback__content{text-align:center;max-width:500px}.error-fallback__icon{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;background:#fee2e2;border-radius:50%;margin-bottom:1.5rem;color:#ef4444}.error-fallback__title{font-size:1.5rem;font-weight:600;color:#1f2937;margin:0 0 .75rem}.error-fallback__message{font-size:1rem;color:#4b5563;line-height:1.6;margin:0 0 1.5rem}.error-fallback__details{margin-bottom:1.5rem;text-align:left}.error-fallback__details summary{font-size:.875rem;color:#6b7280;cursor:pointer;padding:.5rem 0;-webkit-user-select:none;user-select:none}.error-fallback__details summary:hover{color:#4b5563}.error-fallback__code{display:block;background:#f3f4f6;padding:1rem;border-radius:6px;font-family:monospace;font-size:.8125rem;color:#ef4444;margin-top:.5rem;word-break:break-word;text-align:left}.error-fallback__actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.error-fallback__button{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;border-radius:8px;text-decoration:none;cursor:pointer;transition:all .2s ease;min-height:44px}.error-fallback__button:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.error-fallback__button--primary{background:#3b82f6;color:#fff;border:none}.error-fallback__button--primary:hover{background:#2563eb}.error-fallback__button--secondary{background:#fff;color:#374151;border:1px solid #d1d5db}.error-fallback__button--secondary:hover{background:#f9fafb;border-color:#9ca3af}@media(max-width:640px){.error-fallback{min-height:300px;padding:1.5rem;margin:1rem}.error-fallback__icon{width:64px;height:64px}.error-fallback__icon svg{width:32px;height:32px}.error-fallback__title{font-size:1.25rem}.error-fallback__message{font-size:.9375rem}.error-fallback__actions{flex-direction:column}.error-fallback__button{width:100%}}@media(prefers-reduced-motion:reduce){.error-fallback__button{transition:none}}@media(prefers-contrast:high){.error-fallback{border:2px solid #ef4444}.error-fallback__button--primary{border:2px solid #2563eb}.error-fallback__button--secondary{border:2px solid #374151}}:root{--code-snippet-border: #e5e5e5;--code-snippet-bg: #fafafa;--code-snippet-bg-hover: #f5f5f5;--code-snippet-text: #1a1a1a;--code-snippet-text-secondary: #666666;--code-snippet-accent: #2563eb;--code-snippet-focus-ring: #2563eb;--code-snippet-language-badge-bg: #e5e5e5;--code-snippet-language-badge-text: #666666;--code-snippet-code-bg: #f8f9fa;--code-snippet-transition-duration: .28s;--code-snippet-touch-target: 2.75rem}.code-snippet{margin:1.5rem 0;border:.0625rem solid var(--code-snippet-border);border-radius:.375rem;background-color:var(--code-snippet-bg);overflow:hidden;max-width:100%;box-sizing:border-box}.code-snippet__toggle{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--code-snippet-touch-target);padding:.75rem 1rem;background:none;border:none;cursor:pointer;font-family:inherit;font-size:.9375rem;color:var(--code-snippet-text);transition:background-color .15s ease;box-sizing:border-box}.code-snippet__toggle:hover,.code-snippet__toggle:active{background-color:var(--code-snippet-bg-hover)}.code-snippet__toggle:focus-visible{outline:.125rem solid var(--code-snippet-focus-ring);outline-offset:-.125rem}.code-snippet__toggle-content{display:flex;gap:.75rem;flex:1;min-width:0;align-items:center;flex-wrap:wrap}.code-snippet__language-badge{flex-shrink:0;padding:.25rem .5rem;background-color:var(--code-snippet-language-badge-bg);color:var(--code-snippet-language-badge-text);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em;border-radius:.1875rem;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;max-width:52vw;overflow:hidden;text-overflow:ellipsis}.code-snippet__title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--code-snippet-text);min-width:0;max-width:60vw}.code-snippet__chevron{flex-shrink:0;color:var(--code-snippet-text-secondary);transition:transform var(--code-snippet-transition-duration) ease-out}.code-snippet__chevron--expanded{transform:rotate(180deg)}.code-snippet__content{overflow:hidden;max-height:0;opacity:0;transition:max-height var(--code-snippet-transition-duration) ease-out,opacity var(--code-snippet-transition-duration) ease-out;background-color:var(--code-snippet-code-bg);border-top:.0625rem solid transparent;width:100%}.code-snippet__content--expanded{max-height:75rem;opacity:1;border-top-color:var(--code-snippet-border)}.code-snippet__content-inner{position:relative;display:flex;flex-direction:column;gap:.75rem;padding:1rem;box-sizing:border-box;width:100%;max-width:100%;min-width:0;overflow-x:hidden}.code-snippet__copy-button{position:static;align-self:flex-end;display:flex;gap:.375rem;padding:.5rem .75rem;background-color:#fff;border:.0625rem solid var(--code-snippet-border);border-radius:.25rem;font-size:.8125rem;font-weight:500;color:var(--code-snippet-text-secondary);cursor:pointer;transition:all .15s ease;z-index:1;white-space:nowrap}.code-snippet__copy-button:hover{background-color:var(--code-snippet-bg-hover);border-color:var(--code-snippet-text-secondary);color:var(--code-snippet-text)}.code-snippet__copy-button:focus-visible{outline:.125rem solid var(--code-snippet-focus-ring);outline-offset:.125rem}.code-snippet__copy-button--copied{color:#16a34a;border-color:#16a34a;background-color:#f0fdf4}.code-snippet__pre{margin:0;padding:1rem;background-color:#fff;border:.0625rem solid var(--code-snippet-border);border-radius:.25rem;overflow-x:auto;width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-size:inherit}.code-snippet__code{display:block;font-family:SF Mono,Monaco,Inconsolata,Fira Code,Cascadia Code,monospace;font-size:.875rem;line-height:1.6;color:var(--code-snippet-text);background:none;padding:0;max-width:100%;min-width:0;overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap}.code-snippet__code .hljs-keyword,.code-snippet__code .hljs-selector-tag,.code-snippet__code .hljs-tag{color:#d73a49}.code-snippet__code .hljs-string,.code-snippet__code .hljs-attr{color:#032f62}.code-snippet__code .hljs-number,.code-snippet__code .hljs-literal{color:#005cc5}.code-snippet__code .hljs-comment{color:#6a737d;font-style:italic}.code-snippet__code .hljs-function,.code-snippet__code .hljs-class{color:#6f42c1}.code-snippet__code .hljs-variable,.code-snippet__code .hljs-template-variable{color:#e36209}.code-snippet__code .hljs-property{color:#005cc5}.code-snippet__code .hljs-operator{color:#d73a49}.code-snippet__code .hljs-punctuation{color:#24292e}.code-snippet__code .hljs-built_in{color:#005cc5}@media(max-width:59.375rem){.code-snippet__toggle-content{gap:.5rem}.code-snippet__title{max-width:42vw}.code-snippet__language-badge{font-size:.72rem}}@media(max-width:40rem){.code-snippet{margin:1rem 0;border-radius:.25rem}.code-snippet__toggle{padding:.625rem .875rem;font-size:.875rem}.code-snippet__toggle-content{gap:.5rem;flex-direction:row;flex-wrap:wrap;align-items:flex-start}.code-snippet__language-badge{font-size:.6875rem;padding:.2rem .4rem;max-width:58vw}.code-snippet__title{font-size:.925rem;max-width:45vw}.code-snippet__content-inner{padding:.75rem}.code-snippet__pre{padding:.75rem;font-size:.89em;border-radius:.1875rem}.code-snippet__code{font-size:.8125rem;word-break:break-all;white-space:pre-wrap}.code-snippet__copy-button{padding:.375rem .625rem;font-size:.75rem}}@media(max-width:26.25rem){.code-snippet__toggle{font-size:.825rem;padding:.5rem}.code-snippet__title{max-width:60vw;font-size:.79rem}.code-snippet__language-badge{max-width:30vw;font-size:.6rem;padding:.17rem .3rem}.code-snippet__content-inner,.code-snippet__pre{padding:.5rem}.code-snippet__copy-button{padding:.3rem .5rem;font-size:.68rem}}@media(prefers-reduced-motion:reduce){.code-snippet__content,.code-snippet__chevron,.code-snippet__toggle,.code-snippet__copy-button{transition:none!important}.code-snippet__chevron--expanded{transform:rotate(180deg)}}@media print{.code-snippet__toggle{display:none}.code-snippet__content{max-height:none!important;opacity:1!important;border-top-color:var(--code-snippet-border)!important}.code-snippet__copy-button{display:none}}.mermaid-flowchart{margin:1.5rem 0}.mermaid-flowchart__canvas{width:100%;overflow-x:auto;border:1px solid #d1d5db;border-radius:6px;padding:.75rem;background:#fff}.mermaid-flowchart__canvas svg{display:block;max-width:100%;height:auto;margin:0 auto}.mermaid-flowchart__error{border:1px solid #ef4444;border-radius:6px;padding:.75rem;color:#991b1b;background:#fef2f2}.mermaid-flowchart__error pre{margin-top:.5rem;overflow-x:auto;white-space:pre-wrap}.academic-content{--academic-text: #1a1a1a;--academic-muted: #4b5563;--academic-border: #d1d5db;--academic-accent: #2563eb;--academic-space-1: .75rem;--academic-space-2: 1rem;--academic-space-3: 1.5rem;--academic-space-4: 2rem;--academic-space-5: 3rem;--academic-space-6: 4rem;color:var(--academic-text);box-sizing:border-box;text-align:justify;overflow-wrap:anywhere}.academic-content__section-title{margin:0 0 var(--academic-space-2);font-size:clamp(1.35rem,2.2vw,1.6rem);line-height:1.3;font-weight:650;text-align:justify}.academic-content p{margin:0 0 var(--academic-space-3);font-size:1rem;line-height:1.75;color:var(--academic-text);text-align:justify}.academic-content a{color:var(--academic-accent);text-decoration-thickness:1px;text-underline-offset:2px}.academic-content .math-inline .katex{font-size:1.05em}.academic-content .math-display{display:block;margin:var(--academic-space-2) 0;overflow-x:auto;text-align:center}.academic-content ul{margin:0 0 var(--academic-space-3);padding-left:1.25rem;color:var(--academic-text);text-align:justify}.academic-content li{margin-bottom:.5rem;line-height:1.7;text-align:justify}.academic-content__list{margin:0 0 var(--academic-space-3);padding-left:1.5rem;text-align:justify}.academic-content__list--ordered{list-style-type:decimal}.academic-content__table-wrap{margin:var(--academic-space-3) 0;overflow-x:auto}.academic-content__table{width:100%;border-collapse:collapse;border:1px solid var(--academic-border);font-size:.95rem}.academic-content__table th,.academic-content__table td{padding:.7rem .8rem;border:1px solid var(--academic-border);text-align:left;vertical-align:top}.academic-content__divider{border-top:1px solid var(--academic-border);margin:var(--academic-space-4) 0}.academic-content__table th{background:#f8fafc;font-weight:600}.academic-content__figure{margin:var(--academic-space-4) 0;padding-right:var(--academic-space-2);box-sizing:border-box}.academic-content__figure .image-with-zoom__wrapper{width:min(100%,680px)}.academic-content__figure img,.academic-content__video{display:block;width:min(100%,680px);border:1px solid var(--academic-border);border-radius:6px}.academic-content__caption{margin:var(--academic-space-2) auto 0;max-width:680px;color:var(--academic-muted);font-size:.875rem;line-height:1.6;font-style:italic;text-align:justify}.academic-content .code-snippet{margin-top:var(--academic-space-3)}@media(max-width:768px){.academic-content{text-align:justify;padding:0}.academic-content__section{margin-top:var(--academic-space-4);box-sizing:border-box;padding:0}.academic-content__section-title,.academic-content p,.academic-content li,.academic-content ul,.academic-content__list{text-align:left}.academic-content__table{min-width:36rem}.academic-content__figure{padding-right:var(--academic-space-1)}}@media(max-width:480px){.academic-content__figure{padding-right:var(--academic-space-1)}.academic-content__figure img{width:100%}}@keyframes image-with-zoom-fade-in{0%{opacity:0}to{opacity:1}}@keyframes image-with-zoom-img-in{0%{opacity:0;transform:scale(.93) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.image-with-zoom__wrapper{position:relative;display:block;width:100%;overflow:hidden;border-radius:8px;cursor:zoom-in;outline:none;-webkit-tap-highlight-color:transparent}.image-with-zoom__wrapper:focus-visible{box-shadow:0 0 0 3px #63b3edb3}.image-with-zoom__thumb{display:block;width:100%;height:auto;object-fit:cover;transition:transform .35s cubic-bezier(.25,.46,.45,.94),filter .35s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.image-with-zoom__wrapper:hover .image-with-zoom__thumb{transform:scale(1.04);filter:brightness(.88)}.image-with-zoom__backdrop{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:#05050ae0;backdrop-filter:blur(12px) saturate(.6);-webkit-backdrop-filter:blur(12px) saturate(.6);cursor:zoom-out;box-sizing:border-box;animation:image-with-zoom-fade-in .28s cubic-bezier(.22,1,.36,1) forwards}.image-with-zoom__close{position:absolute;top:20px;right:20px;width:44px;height:44px;border:none;border-radius:50%;background:#ffffff1f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;font-size:1.75rem;font-weight:300;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1);z-index:1}.image-with-zoom__close:hover{background:#ffffff40;transform:scale(1.12) rotate(90deg)}.image-with-zoom__close:focus-visible{outline:2px solid rgba(99,179,237,.8);outline-offset:2px}.image-with-zoom__content{position:relative;display:flex;align-items:center;justify-content:center;cursor:default;max-width:min(92vw,1200px);max-height:88vh}.image-with-zoom__image{display:block;max-width:100%;max-height:88vh;width:auto;height:auto;border-radius:6px;box-shadow:0 32px 80px #0009,0 8px 24px #0006;-webkit-user-select:none;user-select:none;animation:image-with-zoom-img-in .4s cubic-bezier(.22,1,.36,1) forwards}@media(max-width:480px){.image-with-zoom__backdrop{padding:12px}.image-with-zoom__close{top:12px;right:12px}.image-with-zoom__image{max-height:80vh}}.quick-links-sidebar{background:#fff;padding:.625rem .75rem;width:100%;max-width:100%;min-width:0}.quick-links-sidebar__title{font-size:.72rem;font-weight:600;color:#4b5563;margin:0 0 .45rem;text-transform:uppercase;letter-spacing:.06em}.quick-links-sidebar__links{display:flex;flex-direction:column;gap:.2rem;min-width:0}.quick-links-sidebar__link{display:flex;align-items:center;gap:.42rem;padding:.32rem .1rem;color:#4b5563;text-decoration:none;transition:color .2s ease;font-size:.8rem;line-height:1.25;min-height:2.5rem;min-width:0;max-width:100%}.quick-links-sidebar__link span{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;word-break:break-word}.quick-links-sidebar__link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.quick-links-sidebar__link:hover{color:#1a1a1a;text-decoration:underline;text-underline-offset:2px}.quick-links-sidebar__link svg{flex-shrink:0;color:#6b7280;width:.875rem;height:.875rem}.quick-links-sidebar__link:hover svg{color:#1a1a1a}.quick-links-sidebar__link--thesis{border-color:#bfdbfe;color:#1d4ed8}.quick-links-sidebar__link--document,.quick-links-sidebar__link--external{border-color:transparent}.quick-links-sidebar__divider{margin:.45rem 0 .2rem;border-top:1px solid #eceff3}@media(max-width:768px){.quick-links-sidebar{padding:.625rem .7rem}.quick-links-sidebar__title{margin-bottom:.4rem}.quick-links-sidebar__links{gap:.2rem}.quick-links-sidebar__link{padding:.3rem .1rem;font-size:.78rem}}@media(prefers-reduced-motion:reduce){.quick-links-sidebar,.quick-links-sidebar__link{transition:none!important}}@media(max-width:480px){.quick-links-sidebar{padding:.55rem .6rem}.quick-links-sidebar__links{gap:.15rem}.quick-links-sidebar__link{padding:.25rem .08rem;font-size:.75rem}}.share-section{margin-top:.1rem}.share-section__button{display:inline-flex;align-items:center;gap:.35rem;border:none;background:transparent;padding:.15rem 0;color:#4b5563;font-size:.78rem;font-weight:500;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.share-section__button:hover{color:#111827}.share-section__button svg{width:.875rem;height:.875rem}.share-section__button:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.share-modal__overlay{position:fixed;inset:0;z-index:1200;background:#0f172a61;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;padding:1rem}.share-modal{width:min(26.875rem,100%);background:#fff;border:1px solid #e5e7eb;border-radius:.625rem;box-shadow:0 22px 52px #0f172a3d;padding:.8rem}.share-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.65rem}.share-modal__title{margin:0;font-size:.92rem;font-weight:700;color:#111827}.share-modal__close{border:none;background:transparent;color:#6b7280;font-size:1.1rem;line-height:1;padding:.12rem .35rem;cursor:pointer}.share-modal__close:hover{color:#111827}.share-modal__close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.share-modal__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.share-modal__option{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;border:1px solid #e5e7eb;border-radius:.5rem;padding:.5rem .58rem;color:#374151;background:#f9fafb;font-size:.8rem;font-weight:500;transition:background-color .2s ease,border-color .2s ease,color .2s ease;cursor:pointer}.share-modal__option svg{width:.9375rem;height:.9375rem;flex-shrink:0}.share-modal__option:hover{background:#f3f4f6;border-color:#cbd5e1;color:#111827}.share-modal__option:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.share-modal__option--facebook:hover{border-color:#93c5fd}.share-modal__option--x:hover{border-color:#9ca3af}.share-modal__option--linkedin:hover{border-color:#93c5fd}.share-modal__option--email:hover{border-color:#86efac}.share-modal__option--copy:hover{border-color:#c4b5fd}@media(max-width:640px){.share-modal{padding:.7rem}.share-modal__options{grid-template-columns:1fr}}.tags-section{padding:1.5rem 0}.tags-section__inner{width:min(75rem,100%);margin:0 auto;padding:0 clamp(1rem,3vw,2rem);display:flex;align-items:flex-start;gap:.875rem}.tags-section__heading{font-size:.875rem;font-weight:600;color:#374151;margin:0;text-transform:uppercase;letter-spacing:.05em;line-height:1.7;white-space:nowrap}.tags-section__container{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.5rem}@media(max-width:768px){.tags-section{padding:1.25rem 0}.tags-section__inner{flex-direction:column;align-items:center;text-align:center}.tags-section__heading{margin-bottom:.25rem}.tags-section__container{justify-content:center}}.related-projects{background-color:#000;padding:clamp(2.5rem,6vw,4rem) 0;margin-top:clamp(1.25rem,3vw,2rem)}.related-projects__container{width:min(75rem,calc(100% - clamp(1.25rem,6vw,3rem)));margin:0 auto}.related-projects__heading{font-size:clamp(1.35rem,3vw,1.75rem);font-weight:600;color:#fff;margin:0 0 clamp(1.25rem,3vw,2rem) 0;text-align:left}.related-projects__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2.5vw,1.5rem)}@media(max-width:1024px){.related-projects__grid{grid-template-columns:repeat(2,1fr);gap:1.25rem}}@media(max-width:768px){.related-projects__heading{margin-bottom:1.2rem;text-align:center}.related-projects__grid{grid-template-columns:1fr;gap:.95rem}}@media(max-width:480px){.related-projects__heading{font-size:1.32rem}}.content-detail{width:100%;max-width:100%;box-sizing:border-box;overflow-x:clip}.content-detail__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem;width:min(75rem,100%);margin:clamp(1rem,3vw,1.5rem) auto 0;padding:0 clamp(1rem,3vw,2rem);box-sizing:border-box;font-size:.9375rem;color:#64748b;position:relative;z-index:1}.content-detail__meta-label{font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.content-detail__meta-value{font-weight:500;color:#334155}.content-detail__layout{display:grid;grid-template-columns:1fr minmax(14rem,17.5rem);gap:clamp(1.5rem,4vw,4rem);width:min(75rem,100%);margin:clamp(2rem,6vw,4rem) auto;padding:0 clamp(1rem,3vw,2rem);box-sizing:border-box;align-items:start}.content-detail__content{min-width:0;max-width:100%;padding-bottom:clamp(2rem,5vw,3.5rem)}.content-detail__sidebar{position:sticky;top:clamp(4.5rem,8vw,6.25rem);min-width:0;max-width:100%}@media(max-width:64rem){.content-detail__layout{grid-template-columns:1fr;gap:clamp(1.5rem,4vw,3rem)}.content-detail__sidebar{position:static}}.content-detail-state{text-align:center;padding:clamp(2.5rem,7vw,4rem) clamp(1rem,4vw,1.5rem);max-width:37.5rem;margin:0 auto;animation:fade-in-up .4s ease-out}@keyframes fade-in-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.content-detail-state__message{font-size:clamp(1.05rem,2.2vw,1.25rem);color:#4b5563;margin:0 0 2rem}.content-detail-state__link{display:inline-block;padding:.75rem 1.5rem;background-color:#1a1a1a;color:#fff;text-decoration:none;border-radius:.25rem;font-weight:500;transition:background-color .2s ease}.content-detail-state__link:hover{background-color:#2563eb}@media(max-width:768px){.content-detail-state__message{font-size:1.125rem}}@media(max-width:480px){.content-detail-state__link{width:100%;max-width:18rem}}@media(prefers-reduced-motion:reduce){.content-detail-state,.content-detail-state__link{animation:none!important;transition:none!important}}
