﻿:root{--brand-900:#0b3d5c;--brand-700:#115e87;--brand-500:#1a76a3;--brand-300:#6fb0cf;--brand-100:#e6f0f5;--accent-700:#8e3d23;--accent-600:#b04a2e;--accent-300:#e2a38f;--neutral-1000:#0b1220;--neutral-800:#1e293b;--neutral-700:#334155;--neutral-500:#64748b;--neutral-300:#cbd5e1;--neutral-200:#e2e8f0;--neutral-100:#f1f5f9;--neutral-50:#f8fafc;--bg:#fafaf9;--surface:#fff;--muted:#f5f6f7;--border:#e5e7eb;--success-600:#2e7d32;--warn-600:#b45309;--danger-600:#b91c1c;--font-sans:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;--fs-300: .875rem;--fs-400: 1rem;--fs-500: 1.125rem;--fs-600: 1.375rem;--fs-700: 1.75rem;--fs-800: 2.125rem;--fs-900: clamp(2.2rem, 3vw + 1rem, 3rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius:14px;--radius-sm:8px;--shadow-1: 0 2px 10px rgba(17, 24, 39, .08);--shadow-2: 0 8px 28px rgba(2, 6, 23, .12);--link: var(--brand-700);--link-hover: var(--brand-900);--focus: 2px dashed var(--accent-600);--focus-offset: 3px;--wrap:72rem}:root[data-theme="dark"]{--bg: #0c1118;--surface: #0f172a;--muted: #0b1422;--border: #1f2937;--neutral-1000: #f8fafc;--neutral-800: #e5e7eb;--neutral-700: #cbd5e1;--neutral-500: #94a3b8;--neutral-300: #475569;--neutral-200: #334155;--neutral-100: #1f2937;--neutral-50: #111827;--brand-900: #9dd3f0;--brand-700: #7dbfe4;--brand-500: #58a8d5;--brand-300: #2e7aa6;--brand-100: #133142;--accent-700: #f2b19e;--accent-600: #e89379;--accent-300: #c67058;--link: var(--brand-500);--link-hover: var(--brand-700);--shadow-1: 0 2px 10px rgba(0, 0, 0, .3);--shadow-2: 0 10px 30px rgba(0, 0, 0, .5)}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-400);line-height:1.65;letter-spacing:.01em;color:var(--neutral-1000);background:radial-gradient(1200px 800px at 10% -10%, var(--neutral-100) 0%, transparent 60%) no-repeat,var(--bg);text-rendering:optimizeLegibility}img,svg,video,canvas{display:block;max-width:100%;height:auto}h1,h2,h3,h4{line-height:1.2;letter-spacing:.005em;margin:0 0 var(--space-4)}h1{font-size:var(--fs-900);color:var(--brand-900)}h2{font-size:var(--fs-800);color:var(--brand-900)}h3{font-size:var(--fs-700);color:var(--neutral-800)}h4{font-size:var(--fs-600);color:var(--neutral-800)}p{margin:0 0 var(--space-5);color:var(--neutral-800)}a{color:var(--link);text-underline-offset:2px;text-decoration-thickness:1.5px}a:hover{color:var(--link-hover);text-decoration-color:currentColor}:focus-visible{outline:var(--focus);outline-offset:var(--focus-offset)}.wrapper{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--space-4)}.section{padding:clamp(2rem, 5vw, 4rem) 0}.surface{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-1)}.site-header{position:sticky;top:0;z-index:50;backdrop-filter:saturate(120%) blur(6px);background:color-mix(in oklab, var(--bg) 88%, transparent);border-bottom:1px solid var(--border)}.brand-row{display:flex;align-items:center;gap:var(--space-4);min-height:64px}.site-logo{display:inline-flex;align-items:center;gap:.75rem;font-weight:700;color:var(--brand-900);text-decoration:none;padding:.25rem 0}.site-logo img{width:40px;height:40px;border-radius:8px;object-fit:contain;background:var(--surface);padding:2px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.nav{margin-left:auto;display:flex;gap:clamp(0.5rem, 2vw, 1.25rem);align-items:center;flex-wrap:wrap}.nav a{padding:.5rem .75rem;border-radius:var(--radius-sm);color:var(--neutral-800);text-decoration:none;font-weight:600}.nav a[aria-current="page"],.nav a:hover{background:var(--neutral-100);color:var(--brand-900)}.site-footer{padding:var(--space-6) 0;border-top:1px solid var(--border);color:var(--neutral-700)}.site-footer a{color:var(--neutral-700)}.site-footer a:hover{color:var(--brand-900)}.social-links{margin:var(--space-3) 0;gap:var(--space-3)}.social-links a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--neutral-100);color:var(--neutral-700);transition:all 0.2s ease;text-decoration:none}.social-links a:hover{background:var(--brand-500);color:white;transform:translateY(-2px);box-shadow:0 4px 12px rgba(26,118,163,0.3)}.social-links svg{transition:transform 0.2s ease}.social-links a:hover svg{transform:scale(1.1)}.breadcrumb{margin-bottom:var(--space-4);padding:var(--space-2) 0}.breadcrumb-list{display:flex;align-items:center;gap:var(--space-2);list-style:none;margin:0;padding:0;font-size:0.875rem;color:var(--neutral-600)}.breadcrumb-item{display:flex;align-items:center}.breadcrumb-item:not(:last-child)::after{content:'→';margin-left:var(--space-2);color:var(--neutral-400)}.breadcrumb-item a{color:var(--brand-700);text-decoration:none;transition:color 0.2s ease}.breadcrumb-item a:hover{color:var(--brand-900);text-decoration:underline}.breadcrumb-item.active{color:var(--neutral-800);font-weight:500}.hero{padding:clamp(3rem, 8vw, 6rem) 0;display:grid;gap:var(--space-5);grid-template-columns:1.1fr .9fr;align-items:center}@media (max-width: 900px){.hero{grid-template-columns:1fr}}.kicker{text-transform:uppercase;letter-spacing:.09em;color:var(--neutral-500);font-weight:700}.hero h1 strong{color:var(--accent-600);font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1rem;border-radius:999px;font-weight:700;box-shadow:var(--shadow-1);transition:transform .15s ease}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn--primary{background:#0b3d5c;color:#fff;border:1px solid transparent}.btn--primary:hover{background:#115e87}.btn--outline{background:transparent;color:#0b3d5c;border:1px solid #6fb0cf}.btn--outline:hover{background:var(--neutral-100)}.btn--accent{background:#b04a2e;color:#fff;border:1px solid transparent}.btn--accent:hover{background:#8e3d23}.grid{display:grid;gap:var(--space-5)}.grid--2{grid-template-columns:repeat(2, 1fr)}.grid--3{grid-template-columns:repeat(3, 1fr)}@media (max-width: 900px){.grid--2,.grid--3{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow-1);transition:transform .2s ease, box-shadow .2s ease}.card h3{margin-bottom:var(--space-3)}.card .meta{color:var(--neutral-500)}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.figure{border-radius:var(--radius);overflow:clip;background:var(--muted);border:1px solid var(--border)}.card .figure{position:relative;overflow:hidden;margin-bottom:var(--space-4);background:var(--muted);border-radius:var(--radius);border:1px solid var(--border);height:240px}.card .figure img{width:100%;height:100%;object-fit:cover;object-position:center;border-radius:var(--radius);transition:transform 0.3s ease, filter 0.3s ease;display:block}.card .figure:hover img{transform:scale(1.05);filter:brightness(1.1)}.grid .card{display:flex;flex-direction:column}.grid .card .figure{flex-shrink:0}.grid .card>*:not(.figure){flex-grow:1}figure{margin:0;transition:transform 0.3s ease, box-shadow 0.3s ease}figure img{border-radius:var(--radius);width:100%;height:auto;display:block;transition:transform 0.3s ease, filter 0.3s ease}figure figcaption{margin-top:0.75rem;font-size:0.875rem;color:var(--neutral-500);font-style:italic;text-align:center;line-height:1.4}figure:hover{transform:translateY(-4px);box-shadow:0 20px 40px -12px rgba(0,0,0,0.15)}figure:hover img{transform:scale(1.02);filter:brightness(1.05) contrast(1.02)}.hero-image{max-width:100%;margin:2rem auto}.hero-image img{border-radius:var(--radius);box-shadow:0 8px 32px rgba(0,0,0,0.1)}.hero-image:hover{transform:translateY(-6px);box-shadow:0 25px 50px -12px rgba(0,0,0,0.2)}.portfolio-hero{margin:2.5rem auto}.portfolio-hero img{border-radius:var(--radius);box-shadow:0 10px 40px rgba(0,0,0,0.12);border:1px solid var(--border)}.portfolio-hero:hover{transform:translateY(-5px) scale(1.01);box-shadow:0 30px 60px -15px rgba(0,0,0,0.25)}.portfolio-hero:hover img{border-color:var(--brand-300)}@media (max-width: 768px){figure:hover{transform:translateY(-2px);box-shadow:0 12px 24px -8px rgba(0,0,0,0.15)}figure:hover img{transform:scale(1.01)}.hero-image:hover,.portfolio-hero:hover{transform:translateY(-3px)}}.prose{--flow: 1.15em;color:var(--neutral-800)}.prose>*+*{margin-top:var(--flow)}.prose a{color:var(--brand-700)}.prose a:hover{color:var(--brand-900)}.prose blockquote{border-left:4px solid var(--accent-600);padding:.5rem 1rem;background:var(--neutral-100);color:var(--neutral-700);border-radius:var(--radius-sm)}.prose pre,.prose code{font-family:var(--font-mono);background:var(--neutral-100);border:1px solid var(--border);border-radius:var(--radius-sm)}.prose pre{padding:var(--space-4);overflow:auto}.prose h2{margin-top:1.5em}.prose h3{margin-top:1.25em}.table{width:100%;border-collapse:collapse;font-size:.95rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.table th,.table td{padding:.75rem 1rem;border-bottom:1px solid var(--border);vertical-align:top}.table thead th{background:var(--neutral-100);text-align:left;color:var(--neutral-700)}.table tr:hover td{background:color-mix(in oklab, var(--neutral-100) 60%, transparent)}.input,.select,.textarea{width:100%;padding:.7rem .9rem;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--neutral-800);box-shadow:inset 0 1px 0 rgba(0,0,0,0.02)}.input:focus,.select:focus,.textarea:focus{outline:var(--focus);outline-offset:var(--focus-offset)}.label{display:block;font-weight:600;margin-bottom:.4rem;color:var(--neutral-700)}.help{color:var(--neutral-500);font-size:.85rem}.badge{display:inline-block;padding:.25rem .6rem;border-radius:999px;font-weight:700;font-size:.75rem}.badge--success{background:#e0ece0;color:#2e7d32;border:1px solid #29712d}.badge--warn{background:#f4e5da;color:#b45309;border:1px solid #a24b08}.badge--danger{background:#f5dddd;color:#b91c1c;border:1px solid #a71919}.alert{border:1px solid var(--border);border-left:5px solid var(--brand-700);padding:.9rem 1rem;border-radius:var(--radius-sm);background:var(--neutral-100)}.alert.alert--accent{border-left-color:var(--accent-600)}.visually-hidden{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);white-space:nowrap}.skip-link{position:absolute;left:-999px;top:0;background:var(--brand-900);color:#fff;padding:.5rem .75rem;border-radius:0 0 var(--radius-sm) var(--radius-sm);z-index:999}.skip-link:focus{left:0}::selection{background:color-mix(in oklab, var(--accent-600) 35%, white);color:#111827}.stack>*+*{margin-top:var(--space-4)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.center{display:grid;place-items:center}.right{margin-left:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:2rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:2rem}.py-2{padding-block:.5rem}.py-4{padding-block:1rem}.py-6{padding-block:2rem}.p-4{padding:1rem}.p-5{padding:1.5rem}.p-6{padding:2rem}.embed{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:var(--radius);overflow:clip;border:1px solid var(--border)}.embed iframe{position:absolute;inset:0;width:100%;height:100%}@media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important;scroll-behavior:auto !important}}@media print{:root{--bg: #fff;--surface: #fff}body{color:#111;background:#fff}.site-header,.site-footer,.nav,.btn,.alert{display:none !important}a{text-decoration:underline}.wrapper{max-width:100%;padding:0}.prose pre{white-space:pre-wrap}}.references{margin-top:1.75rem}.references-heading{font-size:1.125rem;font-weight:600;margin-bottom:0.5rem;color:var(--neutral-800, #222)}.reference-item{display:grid;grid-template-columns:3rem 1fr;gap:0.5rem;padding:0.5rem 0;border-top:1px solid var(--border, #e6e6e6)}.reference-item:last-child{border-bottom:1px solid var(--border, #e6e6e6)}.ref-number{font-variant-numeric:tabular-nums;color:var(--neutral-500, #666);text-align:right;padding-right:0.25rem}.ref-content{line-height:1.5;color:var(--neutral-800, #333)}.ref-content em{font-style:italic}.ref-content a.ref-title{text-decoration:none;color:var(--brand-700, #0056b3)}.ref-content a.ref-title:hover{text-decoration:underline}.ref-content .ref-link{margin-left:0.25rem;font-size:0.9em}.citation a{text-decoration:none;color:var(--brand-700, #0056b3)}.citation a:hover{text-decoration:underline}.ref-link a{word-break:break-all;overflow-wrap:anywhere}@media print{.ref-link a::after{content:" (" attr(href) ")";font-size:0.85em;color:#555}}.back-to-top{margin-top:1.5rem}.back-to-top .btn--small{padding:0.5rem 1rem;font-size:0.9rem}.footnote-link{color:var(--brand-600);text-decoration:none;font-weight:500}.footnote-link:hover{text-decoration:underline}.footnote-item{margin-bottom:0.5rem;padding:0.5rem;background:var(--neutral-50);border-radius:var(--radius-sm);font-size:0.9rem;line-height:1.4}.footnote-item .footnote-number{font-weight:600;color:var(--brand-600);margin-right:0.5rem;min-width:1.5rem;display:inline-block}.footnote-item .footnote-back{margin-left:0.5rem;color:var(--neutral-500);text-decoration:none}.footnote-item .footnote-back:hover{color:var(--brand-600)}.portfolio-category{margin-bottom:3rem}.portfolio-category h2{color:var(--brand-900);border-bottom:2px solid var(--brand-300);padding-bottom:0.5rem;margin-bottom:2rem;font-size:1.75rem}.portfolio-category h2:before{content:'▫';color:var(--accent-600);margin-right:0.5rem}.portfolio-category:last-child{margin-bottom:0}.portfolio-category .text-lg{font-size:1.125rem;line-height:1.7}.portfolio-category .text-secondary{color:var(--neutral-600);margin-bottom:2rem;font-style:italic}.portfolio-category .grid--2{gap:2rem}@media (min-width: 768px){.portfolio-category .grid--2{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 767px){.portfolio-category .grid--2{grid-template-columns:1fr}}.portfolio-category .card{transition:all 0.3s ease}.portfolio-category .card:hover{transform:translateY(-3px);box-shadow:0 15px 35px -10px rgba(0,0,0,0.15);border-color:var(--brand-300)}.ppt-embed{margin:2rem auto;box-shadow:var(--shadow-2);border-radius:var(--radius);overflow:hidden;background:var(--surface);border:1px solid var(--border)}.ppt-frame{position:relative;background:var(--neutral-1000)}.ppt-skeleton .ppt-dot{animation:pptPulse 1.2s infinite ease-in-out;font-size:1.2rem}.ppt-skeleton .ppt-dot:nth-child(2){animation-delay:0.2s}.ppt-skeleton .ppt-dot:nth-child(3){animation-delay:0.4s}@keyframes pptPulse{0%,80%,100%{opacity:0.3}40%{opacity:1}}.ppt-load{transition:all 0.2s ease;font-family:var(--font-sans)}.ppt-load:hover{background:var(--neutral-100) !important;transform:scale(1.02) !important;box-shadow:var(--shadow-1)}.ppt-load:active{transform:scale(0.98) !important}.ppt-fallback a{color:var(--brand-300);text-decoration:none}.ppt-fallback a:hover{color:var(--brand-100);text-decoration:underline}.ppt-noscript{text-align:center;padding:1rem;background:var(--muted);border-radius:var(--radius);margin-top:1rem}.ppt-noscript .btn{margin:0 0.25rem}.ppt-embed-error{padding:1rem;background:var(--danger-600);color:white;border-radius:var(--radius);margin:1rem 0}.ppt-embed-error code{background:rgba(255,255,255,0.2);padding:0.2rem 0.4rem;border-radius:3px;font-family:var(--font-mono)}@media (max-width: 768px){.ppt-embed{margin:1rem auto}.ppt-frame{height:400px !important}.ppt-load{font-size:0.9rem;max-width:16rem !important}}.image-link{position:relative;display:block;overflow:hidden;border-radius:var(--radius);transition:transform 0.3s ease, box-shadow 0.3s ease;cursor:pointer}.image-link:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,0.1)}.image-link img{width:100%;height:auto;transition:transform 0.3s ease;display:block}.image-link:hover img{transform:scale(1.03)}.image-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg, rgba(26,118,163,0.8), rgba(176,74,46,0.8));display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.3s ease;backdrop-filter:blur(2px)}.image-link:hover .image-overlay{opacity:1}.view-project{color:white;font-weight:600;font-size:1.1rem;text-shadow:0 2px 4px rgba(0,0,0,0.3);padding:0.75rem 1.5rem;border:2px solid rgba(255,255,255,0.8);border-radius:var(--radius-sm);background:rgba(255,255,255,0.1);backdrop-filter:blur(8px);transition:all 0.3s ease}.image-link:hover .view-project{background:rgba(255,255,255,0.2);border-color:white;transform:scale(1.05)}.image-link:focus{outline:3px solid var(--brand-300);outline-offset:2px}.aa-figure{margin:1.5rem auto;text-align:center}.aa-figure img{width:100%;height:auto;display:block;box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);transition:transform 0.2s ease, box-shadow 0.2s ease}.aa-figure img:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.aa-figure .aa-fig-link{display:inline-block;text-decoration:none}.aa-figure .aa-fig-link:focus{outline:3px solid var(--brand-300);outline-offset:2px}.aa-figcap{margin-top:0.75rem;font-size:0.875rem;color:var(--neutral-500);line-height:1.4}.aa-figcap .aa-cap{font-style:italic}.aa-figcap .aa-attr{color:var(--neutral-700);font-weight:500}.aa-figcap .aa-sep{opacity:0.7}.aa-figure.inline-small{max-width:200px;float:left;margin:0 1rem 1rem 0}@media (max-width: 768px){.aa-figure.inline-small{float:none;margin:1rem auto}}.aa-figure.inline-small-right{max-width:200px;float:right;margin:0 0 1rem 1rem}@media (max-width: 768px){.aa-figure.inline-small-right{float:none;margin:1rem auto}}.aa-figure.inline-medium{max-width:300px;float:right;margin:0 0 1rem 1rem}@media (max-width: 768px){.aa-figure.inline-medium{float:none;margin:1rem auto}}.aa-figure.inline-medium-left{max-width:300px;float:left;margin:0 1rem 1rem 0}@media (max-width: 768px){.aa-figure.inline-medium-left{float:none;margin:1rem auto}}.aa-figure.center{margin-left:auto;margin-right:auto;float:none}.aa-figure.is-svg img{max-width:100%;height:auto}@media (max-width: 768px){.aa-figure{margin:1rem auto}.aa-figure img:hover{transform:none}.image-link:hover{transform:none}.image-link:hover img{transform:scale(1.02)}.view-project{font-size:1rem;padding:0.6rem 1.2rem}}
