:root{color-scheme:dark;--ui-t:.32s;--ui-e:cubic-bezier(.2,.85,.2,1);--ui-fade:.22s;--glass-blur:10px;--bg:#0b0f12;--bg2:#070a0d;--panel:#0f1720;--panel2:#0b1320;--text:#e6eef6;--title:#f3f8ff;--muted:#9aa4ad;--accent:#7c5cff;--glass: rgba(255,255,255,.03);--border: rgba(255,255,255,.06);--shadow: 0 18px 56px rgba(2,6,23,.6)}:root[data-theme=light]{color-scheme:light;--bg:#f6f7f6;--bg2:#eef0ef;--panel:#ffffff;--panel2:#fbfbfa;--text:#0b0f12;--title:#0b0f12;--muted:#4b5563;--accent:#6d28d9;--glass: rgba(15,23,42,.04);--border: rgba(15,23,42,.12);--shadow: 0 18px 56px rgba(15,23,42,.1)}*{box-sizing:border-box}html,body{overflow-x:hidden}body{margin:0;font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;font-size:16px;line-height:1.6;transition:color var(--ui-t) var(--ui-e),background var(--ui-t) var(--ui-e);background:radial-gradient(1200px 600px at 20% -10%,rgba(124,92,255,.22),transparent 60%),radial-gradient(900px 500px at 90% 0%,rgba(124,92,255,.12),transparent 60%),linear-gradient(180deg,var(--bg),var(--bg2));color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-root{min-height:100vh;display:flex;flex-direction:column}.app-root>main{flex:1}.container{max-width:1040px;margin:0 auto;padding:0 20px}.site-header{border-bottom:1px solid var(--border);padding:32px 0}main.container{padding:34px 20px 44px}.title-main{margin:0;font-size:clamp(34px,4.2vw,48px);letter-spacing:-.02em;line-height:1.08;color:var(--title)}.subtitle{margin:10px 0 0;color:var(--muted);font-size:14.5px;line-height:1.35}.subtitle-location{font-style:italic;opacity:.92;font-size:13.75px}.card-panel{padding:22px;background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 82%,transparent),color-mix(in srgb,var(--panel2) 82%,transparent));border-radius:14px;border:1px solid var(--border);box-shadow:var(--shadow);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}.site-header,.site-footer,.card-panel,.card,.icon-link,.theme-toggle,.modal-content,.modal-backdrop,.lightbox-content,.lightbox-backdrop,.tag,.media-item{transition:background-color var(--ui-t) var(--ui-e),color var(--ui-t) var(--ui-e),border-color var(--ui-t) var(--ui-e),box-shadow var(--ui-t) var(--ui-e),opacity var(--ui-t) var(--ui-e),background var(--ui-t) var(--ui-e)}.header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap}.header-right{display:flex;align-items:flex-start}.icon-row{display:flex;align-items:center;gap:10px}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:var(--glass);border:1px solid var(--border);text-decoration:none;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.icon-link:hover{transform:translateY(-1px);box-shadow:0 10px 30px #02061740}.icon-link:focus-visible{outline:2px solid rgba(124,92,255,.35);outline-offset:2px}.icon-img{width:18px;height:18px;display:block}.theme-toggle{height:40px;padding:0 12px;border-radius:12px;background:var(--glass);border:1px solid var(--border);color:var(--text);cursor:pointer;font-weight:600;letter-spacing:-.01em}.theme-toggle:hover{transform:translateY(-1px)}.theme-toggle:focus-visible{outline:2px solid rgba(124,92,255,.35);outline-offset:2px}.about{margin:0 auto}.about-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;align-items:start}.projects{margin-top:38px}.projects h2{text-align:center}.projects h2{letter-spacing:-.02em;font-size:22px;margin:0 0 12px;color:var(--title);line-height:1.2}.about-title{margin:2px 0 0;text-align:left;letter-spacing:-.01em;font-size:22px;color:var(--title);line-height:1.2;font-weight:750}.about-body{padding-left:16px;border-left:1px solid var(--border)}.about-body .muted{max-width:78ch;margin:0}.about-text{margin:0;text-align:left;-webkit-hyphens:auto;hyphens:auto}.hl{font-weight:700;color:var(--title);padding:0 .18em;border-radius:6px;background:linear-gradient(180deg,transparent 64%,color-mix(in srgb,var(--accent) 22%,transparent) 0);box-decoration-break:clone;-webkit-box-decoration-break:clone}.title-hl{color:var(--title);padding:0 .16em;border-radius:6px;background:linear-gradient(180deg,transparent 62%,color-mix(in srgb,var(--accent) 22%,transparent) 0);box-decoration-break:clone;-webkit-box-decoration-break:clone}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,320px));justify-content:center;gap:22px;margin-top:18px;align-items:start}.grid{align-items:stretch}.card{height:100%;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:0;border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 80%,transparent),color-mix(in srgb,var(--panel2) 80%,transparent));border:1px solid var(--border);cursor:pointer;overflow:hidden;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));content-visibility:auto;contain-intrinsic-size:320px 360px}.card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:#7c5cff38}.card:focus-visible{outline:2px solid rgba(124,92,255,.35);outline-offset:3px}.thumb{width:100%;height:160px;flex:0 0 160px;background:var(--glass);overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02);transition:transform .18s ease,filter .18s ease;filter:saturate(.95) contrast(1.02)}.card:hover .thumb img{transform:scale(1.06);filter:saturate(1) contrast(1.05)}.meta{padding:16px 16px 18px;display:flex;flex-direction:column;gap:10px;flex:1}.name{font-weight:750;color:var(--title);font-size:15.5px;letter-spacing:-.01em;line-height:1.2}.short{color:var(--muted);font-size:13.5px;line-height:1.5;display:-webkit-box;line-clamp:3;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;max-height:64px;overflow:hidden}.tag{display:inline-flex;align-items:center;height:28px;font-size:12px;line-height:1;letter-spacing:-.01em;color:var(--text);padding:0 10px;border-radius:999px;background:var(--glass);border:1px solid var(--border);white-space:nowrap}.link{color:var(--text);text-decoration:none;border-bottom:1px solid rgba(124,92,255,.35)}.link:hover{border-bottom-color:#7c5cffb3}.site-footer{border-top:1px solid var(--border);padding:18px 0;margin-top:34px}.footer-inner{margin:0 auto}.footer-text{font-size:13px;letter-spacing:-.01em;text-align:center}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:28px;overscroll-behavior:contain}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#020617a3;animation:fadeIn var(--ui-fade) ease both}.modal-content{position:relative;z-index:90;max-width:1040px;width:100%;max-height:88vh;overflow:auto;background:linear-gradient(180deg,var(--panel),var(--panel2));border-radius:16px;border:1px solid var(--border);padding:20px 20px 22px;box-shadow:var(--shadow);scrollbar-width:thin;scrollbar-color:rgba(154,164,173,.38) transparent;animation:popIn var(--ui-t) var(--ui-e) both}.modal-content::-webkit-scrollbar{width:10px;height:10px}.modal-content::-webkit-scrollbar-track{background:transparent}.modal-content::-webkit-scrollbar-thumb{background:#9aa4ad52;border-radius:999px;border:3px solid transparent;background-clip:padding-box}.modal-content::-webkit-scrollbar-thumb:hover{background:#9aa4ad7a;background-clip:padding-box}.modal-close{position:absolute;right:14px;top:12px;background:transparent;border:0;color:var(--muted);font-size:18px;cursor:pointer}.modal-body{display:flex;flex-direction:column;gap:16px}.modal-header{padding-right:34px}.modal-title{margin:0 0 10px;font-size:22px;letter-spacing:-.015em;line-height:1.15;color:var(--title)}.muted{color:var(--muted)}.modal-section{margin-top:2px}.section-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.section-title{margin:0 0 10px;font-size:13.5px;color:var(--muted);letter-spacing:.2px;text-transform:uppercase}.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.media-item{padding:0;border:1px solid var(--border);background:var(--glass);border-radius:12px;overflow:hidden;cursor:pointer;outline:none;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center}.media-item img{width:100%;height:100%;object-fit:contain;display:block;filter:saturate(.95);padding:10px}.media-item:focus-visible{outline:2px solid rgba(124,92,255,.2);outline-offset:2px}.pdf-viewer{width:100%;height:520px;border:0;border-radius:12px;overflow:hidden;background:var(--glass);border:1px solid var(--border)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:28px;overscroll-behavior:contain}.lightbox-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#020617b8;animation:fadeIn var(--ui-fade) ease both}.lightbox-side-btn{position:fixed;top:50%;transform:translateY(-50%);z-index:140;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,255,255,.08);background:var(--panel);color:var(--text);cursor:pointer;font-size:26px;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 14px 30px #02061759;transition:transform .12s ease,opacity .12s ease}.lightbox-side-btn.left{left:18px}.lightbox-side-btn.right{right:18px}.lightbox-side-btn:hover{transform:translateY(-50%) scale(1.03)}.lightbox-side-btn:disabled{opacity:.35;cursor:not-allowed}.lightbox-side-btn:focus-visible{outline:2px solid rgba(124,92,255,.35);outline-offset:3px}.lightbox-count{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:140;font-size:12.5px;min-width:72px;text-align:center;padding:8px 12px;border-radius:999px;background:var(--panel);border:1px solid rgba(255,255,255,.06)}.lightbox-zoom{position:fixed;right:20px;bottom:18px;z-index:140;display:flex;align-items:center;gap:8px}.lightbox-zoom-btn{height:36px;min-width:36px;padding:0 10px;border-radius:999px;border:1px solid rgba(255,255,255,.08);background:var(--panel);color:var(--text);cursor:pointer;font-weight:650;letter-spacing:-.01em;box-shadow:0 14px 30px #02061759}.lightbox-zoom-btn:hover{transform:translateY(-1px)}.lightbox-zoom-btn:focus-visible{outline:2px solid rgba(124,92,255,.35);outline-offset:3px}.lightbox-content{position:relative;z-index:130;max-width:84vw;max-height:80vh;overflow:auto;padding:14px;border-radius:14px;background:#0f1720d9;border:1px solid rgba(255,255,255,.06);overscroll-behavior:contain;animation:popIn var(--ui-t) var(--ui-e) both}.lightbox-close{position:fixed;right:20px;top:16px;z-index:140;background:var(--panel);border:1px solid rgba(255,255,255,.06);color:var(--muted);border-radius:10px;padding:8px 10px;cursor:pointer}.site-motto{margin:18px auto 22px;max-width:80ch;padding-top:14px;border-top:1px solid var(--border);font-size:14.5px;line-height:1.45;text-align:center;letter-spacing:.02em;font-style:italic;font-weight:600;opacity:.92}.lightbox-stage{max-width:80vw;max-height:72vh;overflow:hidden;border-radius:12px;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none}.lightbox-stage.dragging .lightbox-img{transition:none}.lightbox-img{max-width:80vw;max-height:72vh;border-radius:12px;display:block;cursor:zoom-in;transition:transform .22s cubic-bezier(.2,.85,.2,1);transform-origin:center center;will-change:transform}.lightbox-img.zoomed{cursor:zoom-out}.lightbox-hint{margin-top:10px;color:var(--muted);font-size:12px;text-align:center}.lightbox-error{min-width:min(520px,90vw);padding:18px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06)}.lightbox-loading{min-width:min(520px,90vw);padding:18px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:12px}.spinner{width:16px;height:16px;border-radius:999px;border:2px solid rgba(255,255,255,.2);border-top-color:#7c5cffe6;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes popIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}::view-transition-old(root){animation:fadeOut var(--ui-t) var(--ui-e) both}::view-transition-new(root){animation:fadeIn var(--ui-t) var(--ui-e) both}@media (max-width:900px){.about-row{grid-template-columns:1fr;gap:10px}.about-body{padding-left:0;border-left:0}.grid{grid-template-columns:repeat(2,minmax(0,340px));justify-content:center}.media-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){:root{--glass-blur:0px}.container{padding:0 16px}main.container{padding:18px 16px 26px}.header-row{flex-direction:column;align-items:flex-start}.header-right{width:100%}.icon-row{width:100%;justify-content:flex-start;flex-wrap:wrap}.about-row{grid-template-columns:1fr;gap:10px}.about-text{text-align:left;-webkit-hyphens:manual;hyphens:manual}.grid{grid-template-columns:minmax(0,520px);justify-content:center}.modal{padding:18px}.media-grid{grid-template-columns:repeat(1,1fr)}.pdf-viewer{height:420px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
