:root{--bg: #04070d;--bg-soft: #090f1a;--surface: rgba(12, 18, 28, .7);--surface-solid: #0b121d;--text: #e8edf8;--muted: #9aabc5;--line: rgba(127, 149, 182, .2);--accent: #3b82f6;--accent-soft: #60a5fa;--shadow: 0 18px 36px rgba(1, 5, 14, .48);--shadow-hover: 0 24px 44px rgba(6, 24, 54, .5);--spotlight: rgba(59, 130, 246, .17)}:root[data-theme=light]{--bg: #eff4fc;--bg-soft: #f7faff;--surface: rgba(255, 255, 255, .84);--surface-solid: #ffffff;--text: #0f172a;--muted: #4d607d;--line: rgba(82, 110, 158, .2);--accent: #2563eb;--accent-soft: #3b82f6;--shadow: 0 16px 34px rgba(27, 57, 110, .14);--shadow-hover: 0 22px 40px rgba(27, 57, 110, .22);--spotlight: rgba(59, 130, 246, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%;background:var(--bg)}html{scroll-behavior:smooth;background-color:var(--bg)}body{margin:0;font-family:Inter,sans-serif;color:var(--text);line-height:1.6;cursor:default;background:radial-gradient(circle at 8% 4%,rgba(59,130,246,.1),transparent 26%),radial-gradient(circle at 88% 12%,rgba(59,130,246,.08),transparent 28%),linear-gradient(180deg,var(--bg-soft),var(--bg));background-color:var(--bg);overscroll-behavior-y:none;-webkit-tap-highlight-color:rgba(96,165,250,.2);min-height:100dvh;overflow-x:hidden}button,a,[role=button]{cursor:pointer}input,textarea,select{cursor:text}h1,h2,h3,.logo{margin:0;font-family:Manrope,Inter,sans-serif;line-height:1.12;letter-spacing:-.02em}h1{font-size:clamp(2rem,7vw,3.8rem)}h2{font-size:clamp(1.2rem,3vw,1.75rem)}h3{font-size:.98rem}p{margin:0;color:var(--muted)}a{color:inherit}.container{width:min(1120px,92vw);margin:0 auto}.app-shell{min-height:100vh;display:flex;flex-direction:column}main{flex:1;padding-top:82px}.site-header{position:fixed;inset:0 0 auto 0;z-index:50;border-bottom:1px solid var(--line);background:#04070db8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:opacity .18s ease,transform .18s ease}:root[data-theme=light] .site-header{background:#eff4fcdb}.header-row{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:.9rem}.logo{font-size:1.02rem;font-weight:800;text-decoration:none}.brand{display:inline-flex;align-items:center;gap:.55rem}.brand-mark{width:2rem;height:2rem;border-radius:.65rem;border:1px solid var(--line);background:#1019288c;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;color:var(--accent-soft);overflow:hidden}:root[data-theme=light] .brand-mark{background:transparent;border-color:#3b82f63d}.brand-mark img{width:100%;height:100%;object-fit:cover}.site-nav{position:absolute;top:82px;left:0;right:0;padding:.8rem;display:grid;gap:.35rem;border-bottom:1px solid var(--line);background:var(--surface-solid);opacity:0;pointer-events:none;transform:translateY(-8px);transition:opacity .18s ease,transform .18s ease}.site-nav.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-link{text-decoration:none;color:var(--muted);font-weight:700;border-radius:10px;padding:.5rem .68rem;transition:color .2s ease,background-color .2s ease}.nav-link:hover,.nav-link:focus-visible{color:var(--text);background:#3b82f61f}.header-actions{display:flex;align-items:center;gap:.42rem}.theme-toggle,.menu-toggle{width:2.45rem;height:2.45rem;border-radius:.85rem;border:1px solid var(--line);background:var(--surface);color:var(--accent-soft);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s ease,transform .2s ease}.theme-toggle:hover,.menu-toggle:hover{border-color:#60a5faa3;transform:translateY(-1px)}.hero-v2,section,.page{padding:2.2rem 0}.hero-shell{border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:1.2rem}.eyebrow{margin:0 0 .45rem;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-soft)}.lead{margin-top:.36rem;color:var(--text);font-size:clamp(1rem,2.3vw,1.28rem);font-weight:600}.hero-copy{margin-top:.7rem;max-width:62ch}.hero-links{margin-top:.88rem;display:flex;flex-wrap:wrap;gap:.55rem}.hero-links a{border:1px solid var(--line);border-radius:999px;padding:.38rem .72rem;text-decoration:none;display:inline-flex;align-items:center;gap:.45rem;background:#0f162280;transition:border-color .18s ease,transform .18s ease}:root[data-theme=light] .hero-links a{background:#ffffffe0}.hero-links a:hover,.hero-links a:focus-visible{border-color:#60a5faad;transform:translateY(-1px)}.icon-only-links a{width:2.2rem;height:2.2rem;padding:0;justify-content:center;color:var(--accent-soft)}:root[data-theme=light] .icon-only-links a{color:var(--accent)}.icon-only-links a svg{color:currentColor}.icon-only-links span{display:none}.bento{padding-top:.9rem}.bento-grid{display:grid;gap:.72rem}.bento-card,.experience-card,.project-card,.research-card article,.contact-card,.contact-form,.skill-group,.experience-block{border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:.9rem;transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease}.spotlight-card{position:relative;overflow:hidden;--spot-x: 50%;--spot-y: 50%}.spotlight-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;background:radial-gradient(220px circle at var(--spot-x) var(--spot-y),var(--spotlight),transparent 62%);transition:opacity .2s ease}.spotlight-card:hover:before{opacity:1}.spotlight-card>*{position:relative;z-index:1}.hero-shell,.bento-projects,.contact-card,.research-card .spotlight-card{overflow:visible}.bento-card:hover,.experience-card:hover,.project-card:hover,.research-card article:hover,.contact-card:hover,.contact-form:hover,.skill-group:hover,.experience-block:hover{border-color:#60a5fa94;transform:translateY(-3px);box-shadow:var(--shadow-hover)}.clickable-card,.clickable-card *{cursor:pointer}.clickable-card{text-decoration:none;color:inherit;display:block}.bento-card:not(.clickable-card),.bento-card:not(.clickable-card) *{cursor:default}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.card-head svg{color:var(--accent-soft)}.experience-block h2 svg,.research-link-head h2 svg{color:var(--accent-soft)}.card-head-right{display:inline-flex;align-items:center;gap:.4rem}.icon-cta{width:1.85rem;height:1.85rem;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;background:#10182699;color:var(--accent-soft);transition:transform .2s ease}.clickable-card:hover .icon-cta,.clickable-card:focus-visible .icon-cta{transform:translate(2px)}:root[data-theme=light] .icon-cta{background:#ffffffe6;color:var(--accent)}.arrow-cta{width:auto;height:auto;border:0;border-radius:0;background:transparent;padding:0}.bento-intro p+p{margin-top:.6rem}.focus-list{margin:.65rem 0 0;padding:0;list-style:none;display:grid;gap:.5rem}.focus-list li{border:1px solid var(--line);border-radius:12px;padding:.56rem .6rem;display:grid;grid-template-columns:auto 1fr;align-items:flex-start;gap:.45rem;background:#0b111b7a}.focus-list li:hover,.focus-list li:focus-within{border-color:#60a5fab8;box-shadow:var(--shadow-hover)}:root[data-theme=light] .focus-list li{background:#ffffffeb}.focus-list li svg{color:var(--accent-soft);margin-top:.1rem}.focus-list h3{margin-bottom:.16rem}.timeline{margin-top:.65rem;display:grid;gap:.58rem}.timeline-item{border-left:2px solid rgba(96,165,250,.42);padding-left:.58rem}.timeline.with-logo .timeline-item{display:grid;grid-template-columns:36px 1fr;gap:.5rem;align-items:start}.compact-list .timeline-item p:last-child{display:none}.org-logo{width:32px;height:32px;border-radius:10px;border:1px solid var(--line);background:#ffffff14;object-fit:cover}.org-logo.has-white-bg{background:#fff}.org-logo.no-frame{border-color:transparent;background:transparent}.org-logo.logo-contain{object-fit:contain;padding:2px}.org-logo-link{display:inline-flex;border-radius:10px;transition:transform .18s ease}.org-logo-link:hover,.org-logo-link:focus-visible{transform:translateY(-1px)}.period,.status{color:var(--accent-soft);font-size:.82rem;font-weight:700}.company{color:var(--text);font-weight:700}.chip-row{margin-top:.55rem;display:flex;flex-wrap:wrap;gap:.42rem}.chip{border:1px solid var(--line);border-radius:999px;padding:.2rem .5rem;font-size:.74rem;color:var(--text);text-decoration:none;font-weight:700;transition:border-color .2s ease,background-color .2s ease}.chip:hover,.chip:focus-visible{border-color:#60a5fab8;background:#3b82f624}.home-stack-grid{margin-top:.62rem;display:flex;flex-wrap:wrap;gap:.34rem}.home-stack-tile{border:1px solid var(--line);border-radius:999px;padding:.34rem .6rem;display:inline-flex;align-items:center;gap:.34rem;background:#0b111b70;color:var(--text);font-size:.74rem;font-weight:700;line-height:1.2;transition:border-color .2s ease,transform .2s ease,background-color .2s ease}.home-stack-tile svg{color:var(--accent-soft);width:.74rem;height:.74rem}.home-stack-tile:hover,.home-stack-tile:focus-visible{border-color:#60a5fab8;transform:translateY(-1px)}:root[data-theme=light] .home-stack-tile{background:#ffffffeb}.project-preview-list{margin-top:.62rem;display:grid;gap:.5rem}.compact-project-preview .project-preview{padding:.46rem .56rem}.project-preview{border:1px solid var(--line);border-radius:11px;padding:.56rem .62rem;background:#0b111b75;transition:border-color .2s ease,transform .2s ease,background-color .2s ease}.project-preview h3 span{margin-right:.3rem}:root[data-theme=light] .project-preview{background:#ffffffeb}.gallery-teaser-grid{margin-top:.62rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.52rem}.gallery-page-grid{display:grid;gap:.64rem}.gallery-toolbar{display:flex;justify-content:flex-end;margin-bottom:.72rem}.gallery-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;width:100%}.gallery-view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-view-wide{grid-template-columns:repeat(1,minmax(0,1fr))}.gallery-view-wide .gallery-item{min-height:230px}.gallery-view-mosaic{display:block;columns:2;column-gap:.64rem}.gallery-view-mosaic .gallery-item{break-inside:avoid;margin-bottom:.64rem;min-height:auto}.gallery-view-mosaic .gallery-item img{height:auto}.gallery-item{margin:0;position:relative;border-radius:13px;border:1px solid var(--line);overflow:hidden;background:#0b121d;min-height:170px;transition:border-color .2s ease,transform .2s ease}:root[data-theme=light] .gallery-item{background:#fffffff5;border-color:#3b82f638}.gallery-item.compact{min-height:125px}:root[data-theme=dark] .bento-gallery-teaser .gallery-item{background:#0b111b9e;border-color:#60a5fa42}:root[data-theme=light] .bento-gallery-teaser .gallery-item{background:#fffffff5;border-color:#3b82f63d}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;opacity:1;transition:transform .24s ease}.gallery-item.is-loading img{opacity:0}.gallery-image-loader{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:linear-gradient(180deg,#070c1485,#070c145c);pointer-events:none;z-index:1}:root[data-theme=light] .gallery-image-loader{background:linear-gradient(180deg,#ffffffdb,#f7faffb8)}.gallery-image-loader.modal{z-index:3}.gallery-loader-spinner{width:1.36rem;height:1.36rem;border-radius:999px;border:2px solid rgba(148,163,184,.34);border-top-color:var(--accent-soft);animation:spin .8s linear infinite}:root[data-theme=light] .gallery-loader-spinner{border-color:#3b82f63d;border-top-color:var(--accent)}.gallery-item figcaption{position:absolute;inset:auto 0 0 0;background:transparent;padding:.72rem;display:grid;gap:.18rem;z-index:2}:root[data-theme=light] .gallery-item figcaption{background:transparent}.gallery-item figcaption strong{width:fit-content;max-width:100%;padding:.28rem .58rem;border-radius:999px;border:0;background:#060c168f}:root[data-theme=light] .gallery-item figcaption strong{background:#ffffffeb}.gallery-item strong{color:#f7fbff;font-size:.84rem}:root[data-theme=light] .gallery-item strong{color:#0f172a}.gallery-shot-source{position:absolute;right:.42rem;top:.42rem;width:1.34rem;height:1.34rem;border-radius:999px;border:1px solid var(--line);background:#040a14a8;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-soft);z-index:2}:root[data-theme=light] .gallery-shot-source{background:#ffffffeb;color:var(--accent);border-color:#3b82f63d}.gallery-shot-source svg{width:.68rem;height:.68rem;color:currentColor}.gallery-item:hover{border-color:#60a5faad;transform:translateY(-1px)}.gallery-item:hover img{transform:scale(1.04)}.gallery-tile-button{cursor:pointer}.gallery-tile-button *{cursor:inherit}.project-groups,.projects-grid,.experience-grid,.research-card,.contact-grid,.skills-page-groups,.experience-page-grid{display:grid;gap:.72rem}.compact-groups{gap:.62rem}.compact-head{margin-bottom:.8rem}.projects-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.7rem;flex-wrap:wrap;margin-bottom:.75rem}.category-jumps{display:flex;flex-wrap:wrap;gap:.45rem}.category-pill{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);border-radius:999px;padding:.26rem .58rem;text-decoration:none;font-size:.78rem;color:var(--text);background:#0b111b6b;display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;font-weight:700}:root[data-theme=light] .category-pill{background:#ffffffe6}.category-pill:hover,.category-pill:focus-visible{border-color:#60a5fab8}.category-pill strong{min-width:1.2rem;height:1.2rem;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:.68rem}.category-pill.is-collapsed{border-style:dashed;opacity:.8}.category-pill.is-active{border-color:#60a5fac7;background:#3b82f633}.view-switch{display:inline-flex;gap:.32rem}.view-switch button{width:2rem;height:2rem;border-radius:.6rem;border:1px solid var(--line);background:#0b111b6b;color:var(--accent-soft);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}:root[data-theme=light] .view-switch button{background:#ffffffe6}.view-switch button.is-active,.view-switch button:hover{border-color:#60a5fab8}.project-group{display:grid;gap:.65rem}.group-head h2{margin:0}.group-head-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;text-decoration:none;border:1px solid var(--line);border-radius:14px;padding:.62rem;display:flex;justify-content:space-between;gap:.62rem;align-items:center;background:#0b111b6b;color:inherit;text-align:left;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}:root[data-theme=light] .group-head-button{background:#ffffffe6}.group-head-button:hover,.group-head-button:focus-visible{border-color:#60a5fab8;box-shadow:var(--shadow-hover)}.group-head-main{min-width:0;display:grid;gap:.1rem}.group-head-count{font-size:.82rem;color:var(--muted)}.group-head-side{width:min(44vw,190px);min-width:118px;display:flex;align-items:center;gap:.42rem}.group-toggle{width:auto;height:auto;border-radius:0;border:0;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-soft);background:transparent;padding:0;flex-shrink:0;transition:transform .18s ease}.group-toggle.is-collapsed{transform:rotate(-90deg)}.group-cover{width:100%;flex:1;height:58px;border-radius:10px;overflow:hidden;border:1px solid var(--line)}.group-cover img{width:100%;height:100%;object-fit:cover;display:block}.group-cover-placeholder{background:radial-gradient(circle at 20% 20%,rgba(96,165,250,.36),transparent 42%),linear-gradient(140deg,#0f172a,#0a1220)}.project-group .projects-grid{margin-top:.42rem}.project-card{padding:0;overflow:hidden;text-decoration:none;color:inherit}.icon-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.icon-card-grid.grid-large{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-card-grid.grid-compact{grid-template-columns:repeat(3,minmax(0,1fr))}.icon-card-grid.list{grid-template-columns:1fr}.project-mini{min-height:190px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.project-mini.is-interactive{cursor:pointer}.project-mini.is-interactive *{cursor:inherit}.project-mini.is-interactive:hover,.project-mini.is-interactive:focus-visible{transform:translateY(-3px) scale(1.008);border-color:#60a5faad;box-shadow:var(--shadow-hover)}.project-mini.is-interactive:focus-visible{outline:2px solid rgba(96,165,250,.56);outline-offset:2px}.project-cover{width:100%;aspect-ratio:16 / 8;border-bottom:0;background:#0a1220;overflow:hidden;position:relative}.project-cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#02081400,#02081400);pointer-events:none;z-index:1}.mini-cover{aspect-ratio:16 / 7}.project-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}.project-card:hover .project-cover img{transform:scale(1.03)}.project-cover-fallback{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;font-size:1rem;padding:.7rem;text-align:center;color:#d8e7ff}.project-cover-fallback span{font-size:1.6rem}.cover-caption{position:absolute;inset:auto 0 0 0;padding:.35rem .5rem;font-size:.68rem;color:#dbe8ff;background:linear-gradient(180deg,transparent,rgba(2,8,20,.9));letter-spacing:.02em;pointer-events:none;z-index:2}:root[data-theme=light] .cover-caption{color:#0f172a;background:linear-gradient(180deg,#f7faff00,#f7fafff0)}.project-content{padding:.74rem;position:relative}.project-preview-link{position:relative;display:block;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);border-radius:11px;font:inherit;text-align:left;padding-right:1.8rem;text-decoration:none;color:inherit;cursor:pointer}.project-preview-link:hover,.project-preview-link:focus-visible{border-color:#60a5fab8;background:#3b82f61f;transform:translateY(-1px)}.project-preview-icon{position:absolute;right:.52rem;top:50%;transform:translateY(-50%);font-size:.74rem;color:var(--accent-soft);opacity:.75;transition:transform .2s ease,opacity .2s ease}.project-preview-link:hover .project-preview-icon,.project-preview-link:focus-visible .project-preview-icon{opacity:1;transform:translateY(-50%) translate(1px)}.compact-content p:not(.status){display:none}.project-content h3 span{margin-right:.28rem}.project-summary{margin-top:.42rem;display:none}.project-stack-tags{margin:.5rem 0 0;padding:0;list-style:none;display:none;flex-wrap:wrap;gap:.35rem}.project-stack-tags li{border:1px solid var(--line);border-radius:999px;padding:.16rem .44rem;font-size:.72rem;color:var(--text)}.card-open-indicator{position:absolute;top:.48rem;right:.48rem;width:1.62rem;height:1.62rem;border-radius:999px;border:1px solid var(--line);background:linear-gradient(180deg,#101826bd,#0b111b99);display:inline-flex;align-items:center;justify-content:center;color:var(--accent-soft);opacity:0;transform:translateY(2px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}:root[data-theme=light] .card-open-indicator{border-color:#3b82f647;background:linear-gradient(180deg,#fffffff0,#eff6ffe6);color:var(--accent)}.project-mini.is-interactive:hover .card-open-indicator,.project-mini.is-interactive:focus-visible .card-open-indicator{opacity:1;transform:translateY(0)}.empty-card{padding:.8rem}.project-links{display:flex;flex-wrap:wrap;gap:.5rem}.project-links a{position:relative;z-index:1}.icon-links a{width:1.9rem;height:1.9rem;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#101826b8,#0b111b9e);color:var(--accent-soft);padding:0;text-decoration:none}:root[data-theme=light] .icon-links a{background:linear-gradient(180deg,#fffffff0,#f0f8ffe6);border-color:#3b82f63d;color:var(--accent)}.icon-links a:hover,.icon-links a:focus-visible{border-color:#60a5fab8;box-shadow:0 0 0 2px #60a5fa24;transform:translateY(-1px)}.icon-card-grid.list .project-mini{min-height:160px;display:grid;grid-template-columns:220px 1fr}.icon-card-grid.list .mini-cover{aspect-ratio:auto;height:100%;min-height:120px;border-bottom:0;border-right:0}.icon-card-grid.list .compact-content p:not(.status){display:block}.icon-card-grid.list .project-summary,.icon-card-grid.list .project-stack-tags{display:flex}.icon-card-grid.list .project-summary{display:block}.icon-card-grid.list .project-mini .project-content{padding:.9rem}@media (max-width: 640px){.group-head-button{align-items:flex-start}.group-head-side{width:min(43vw,150px);min-width:92px}.group-cover{height:52px}.gallery-view-mosaic{columns:1}.icon-card-grid.list .project-mini{grid-template-columns:1fr}.icon-card-grid.list .mini-cover{border-right:0;border-bottom:0;min-height:150px}}.linked-list{margin-top:.55rem;display:grid;gap:.5rem}.linked-item{border:1px solid var(--line);border-radius:12px;padding:.52rem .58rem;background:#0b111b75;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.linked-item-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);width:100%;text-align:left;color:inherit;font:inherit;background:#0b111b75;cursor:pointer;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}:root[data-theme=light] .linked-item-button{background:#ffffffeb}.linked-item-button:hover,.linked-item-button:focus-visible{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}:root[data-theme=light] .linked-item{background:#ffffffeb}.linked-item:hover,.linked-item:focus-within{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}.cert-list{margin-top:.65rem;display:grid;gap:.5rem}.cert-item{border:1px solid var(--line);border-radius:12px;padding:.52rem .58rem;background:#0b111b75;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}:root[data-theme=light] .cert-item{background:#ffffffeb}.cert-item:hover,.cert-item:focus-within{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}.google-badges-block{margin-top:.75rem;display:grid;gap:.5rem}.google-badges-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.google-badges-head h3{margin:0;font-size:.9rem;color:var(--muted)}.google-badges-refresh{border:0;border-radius:999px;width:1.65rem;height:1.65rem;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-soft);background:transparent;cursor:pointer}.google-badges-refresh:hover,.google-badges-refresh:focus-visible{color:var(--accent)}.google-badges-refresh:disabled{opacity:.5;cursor:default}.google-badges-refresh .is-spinning{animation:spin .9s linear infinite}.google-badges-note{margin:0;font-size:.78rem;color:var(--muted)}.google-badge-profile{border:1px solid var(--line);border-radius:12px;padding:.54rem;background:#0b111b6b;display:grid;gap:.42rem}:root[data-theme=light] .google-badge-profile{background:#ffffffeb}.google-badge-profile-head{display:flex;align-items:center;gap:.42rem}.google-badge-profile-head h4{margin:0;font-size:.84rem}.google-badge-count{margin-left:auto;font-size:.72rem;border:1px solid var(--line);border-radius:999px;padding:.1rem .42rem;color:var(--muted)}.google-badge-profile-link{width:auto;height:auto;border:0;border-radius:0;color:var(--accent-soft);background:transparent;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.google-badge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.42rem}.google-badge-card{border:1px solid var(--line);border-radius:10px;padding:.44rem;background:#0b111b75;display:grid;gap:.32rem;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}:root[data-theme=light] .google-badge-card{background:#ffffffeb}.google-badge-card:hover,.google-badge-card:focus-visible{border-color:#60a5fab8;box-shadow:var(--shadow-hover)}.google-badge-toggle{width:100%;border:0;background:transparent;color:inherit;display:grid;grid-template-columns:auto 1fr auto;gap:.5rem;align-items:center;text-align:left;padding:0;cursor:pointer;font:inherit}.google-badge-thumb,.google-badge-fallback{width:3rem;height:3rem;border-radius:8px;border:1px solid var(--line);background:#070e1994;flex-shrink:0}:root[data-theme=light] .google-badge-thumb,:root[data-theme=light] .google-badge-fallback{background:#fffffff2}.google-badge-thumb{object-fit:cover}.google-badge-fallback{display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;color:var(--accent-soft)}.google-badge-meta{min-width:0;display:grid;gap:.06rem}.google-badge-title,.google-badge-issued,.google-badge-description{margin:0}.google-badge-title{font-size:.77rem;font-weight:650}.google-badge-issued,.google-badge-description{font-size:.68rem;color:var(--muted)}.google-badge-detail{max-height:0;opacity:0;overflow:hidden;transition:max-height .24s ease,opacity .2s ease,margin-top .2s ease;display:grid;gap:.45rem;margin-top:0}.google-badge-card.is-expanded .google-badge-detail{max-height:820px;opacity:1;margin-top:.12rem}.google-badge-image{width:min(210px,100%);aspect-ratio:1 / 1;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#070e1994}:root[data-theme=light] .google-badge-image{background:#fffffff2}.google-badge-external{display:inline-flex;align-items:center;gap:.32rem;text-decoration:none;color:var(--accent-soft);width:fit-content}.google-badge-external:hover,.google-badge-external:focus-visible{color:var(--accent)}.google-badge-open{color:var(--accent-soft);width:.68rem;height:.68rem}.skill-group h2{margin-bottom:.62rem}.skills-badges-section{margin-top:.92rem;display:grid;gap:.55rem}.skills-badges-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.skills-badges-head h2{margin:0}.skills-badge-profile{border:1px solid var(--line);border-radius:14px;padding:.65rem;background:#0b111b6b;display:grid;gap:.5rem}:root[data-theme=light] .skills-badge-profile{background:#ffffffe6}.skills-badge-profile-head{display:flex;align-items:center;gap:.45rem}.skills-badge-profile-head h3{margin:0}.skills-badges-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.55rem}.skills-cloud{display:grid;gap:.48rem}.skill-chip{border:1px solid var(--line);border-radius:12px;padding:.52rem .58rem;display:grid;grid-template-columns:auto 1fr;gap:.52rem;align-items:center;background:#0b111b73}:root[data-theme=light] .skill-chip{background:#ffffffeb}.skill-chip-button{width:100%;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font:inherit;cursor:pointer;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.skill-chip-button:hover,.skill-chip-button:focus-visible{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}.skill-expand-card{display:block;text-align:left}.skill-chip-main{display:flex;align-items:center;justify-content:space-between;gap:.45rem}.skill-chip-label{display:inline-flex;align-items:center;gap:.46rem;min-width:0}.skill-chip-label h3{margin:0}.skill-expand-indicator{display:inline-flex;align-items:center;justify-content:center;color:#9aabc5e6;width:.95rem;height:.95rem;flex-shrink:0;transition:color .2s ease,transform .2s ease}.skill-expand-indicator svg{width:.72rem;height:.72rem}.skill-expand-card:hover .skill-expand-indicator,.skill-expand-card:focus-visible .skill-expand-indicator{color:var(--accent-soft)}.skill-expand-indicator.is-open{transform:rotate(180deg)}.skill-chip-detail{max-height:0;opacity:0;overflow:hidden;margin-top:0;transition:max-height .24s ease,opacity .2s ease,margin-top .2s ease}.skill-expand-card.is-expanded .skill-chip-detail{max-height:140px;opacity:1;margin-top:.46rem}.skill-chip-detail p{margin:0;font-size:.82rem}.skill-chip-icon{width:1.02rem;height:1.02rem;color:var(--accent-soft)}.tag-list{margin:.66rem 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.4rem}.tag-list li{border:1px solid var(--line);border-radius:999px;padding:.2rem .5rem;font-size:.78rem}.text-link{color:var(--accent-soft);text-decoration:none;font-weight:700;display:inline-flex;align-items:center;gap:.35rem}.text-link:hover{text-decoration:none;color:var(--text)}.page{padding-top:1.8rem}.section-head{display:grid;gap:.52rem;margin-bottom:.9rem}.page-cta{margin-top:.84rem;display:flex;flex-wrap:wrap;align-items:center;gap:.52rem}.page-cta-gallery{margin-top:1.2rem;justify-content:flex-end;align-items:flex-end;text-align:right;gap:.38rem;opacity:.9}.page-cta-gallery p{width:100%;font-size:.82rem;max-width:34ch;margin-left:auto}.page-cta-gallery .btn{padding:.48rem .74rem;border-radius:10px;font-size:.82rem}.btn{border:1px solid transparent;border-radius:12px;padding:.64rem .9rem;text-decoration:none;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .18s ease}.btn:hover{transform:translateY(-1px)}.btn-primary{color:#fff;background:linear-gradient(135deg,var(--accent),#2a5fc8)}.btn-ghost{color:var(--text);border-color:var(--line);background:#1018267a}:root[data-theme=light] .btn-ghost{background:#ffffffe6}.btn:disabled{opacity:.62;cursor:not-allowed}.contact-tiles{margin-top:.6rem;display:grid;gap:.5rem}.contact-tile{border:1px solid var(--line);border-radius:12px;padding:.56rem .62rem;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.52rem;text-decoration:none;background:#0b111b73;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.contact-tile svg{color:var(--accent-soft)}:root[data-theme=light] .contact-tile svg{color:var(--accent)}.contact-tile strong{color:var(--text);display:block;font-size:.88rem}.contact-tile p{font-size:.82rem}.contact-tile:hover,.contact-tile:focus-visible{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}:root[data-theme=light] .contact-tile{background:#ffffffeb}.contact-form{display:grid;gap:.42rem}.contact-form.spotlight-card{overflow:visible}.contact-form label{color:var(--text);font-size:.84rem;font-weight:700}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#0a101c99;color:var(--text);font:inherit;padding:.66rem .72rem}:root[data-theme=light] .contact-form input,:root[data-theme=light] .contact-form textarea{background:#ffffffeb}.contact-form input:focus,.contact-form textarea:focus{outline:2px solid rgba(96,165,250,.56);outline-offset:1px}.captcha-wrap{position:relative;margin-top:.22rem;border:1px solid rgba(96,165,250,.28);border-radius:12px;padding:.72rem;background:linear-gradient(180deg,#0a101c80,#0a101c61);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:inset 0 0 0 1px #60a5fa14}:root[data-theme=light] .captcha-wrap{border-color:#3b82f63d;background:linear-gradient(180deg,#ffffffeb,#f7faffdb)}.captcha-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.72rem}.captcha-widget{position:relative;min-height:78px;display:flex;align-items:center;justify-content:center;overflow:visible;border-radius:0;min-width:0;width:100%;max-width:none;flex:1 1 0%;border:0;background:transparent}.captcha-widget>div{position:static;width:auto;max-width:100%;transform:none}.captcha-widget iframe{width:auto;max-width:100%;border:0!important;box-shadow:none!important;background:transparent!important;clip-path:none}.captcha-refresh{width:36px;height:36px;min-width:36px;border-radius:10px;border:1px solid rgba(96,165,250,.24);background:#1018268f;color:var(--accent-soft);padding:.5rem;display:inline-flex;align-items:center;justify-content:center;position:static;flex-shrink:0;cursor:pointer;transition:border-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease}:root[data-theme=light] .captcha-refresh{background:#fffffff0;border-color:#3b82f633}:root[data-theme=dark] .captcha-refresh{background:#1018268f;border-color:#60a5fa3d}.captcha-refresh svg{width:.9rem;height:.9rem}.captcha-refresh:hover,.captcha-refresh:focus-visible{color:var(--accent);border-color:#60a5fab8;box-shadow:0 0 0 2px #60a5fa2e;transform:translateY(-1px)}@media (max-width: 640px){.captcha-row{gap:.6rem}.captcha-refresh{width:34px;height:34px;min-width:34px;padding:.42rem}.footer-row p{width:100%}}@media (max-width: 430px){.captcha-row{grid-template-columns:1fr;align-items:stretch;gap:.48rem}.captcha-widget{min-height:74px;overflow:visible;justify-content:center}.captcha-widget>div{width:min(100%,320px);max-width:100%;transform:none;transform-origin:center top}.captcha-widget iframe{width:100%;max-width:100%}.captcha-refresh{justify-self:end;align-self:center;margin-top:.06rem;width:34px;height:34px;min-width:34px}}.honeypot{position:absolute;left:-9999px;opacity:0;pointer-events:none}.form-feedback{margin-top:.3rem;font-size:.84rem;font-weight:700}.form-feedback.success{color:#22c55e}.form-feedback.error{color:#fb7185}.form-feedback.sending{color:var(--accent-soft)}.site-footer{margin-top:1.6rem;padding:.9rem 0 1.5rem;border-top:1px solid var(--line)}.footer-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap}.footer-icons{display:flex;align-items:center;gap:.45rem;margin-left:auto;justify-content:flex-end}.footer-icons a{width:2rem;height:2rem;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--accent-soft)}.footer-icons a:hover,.footer-icons a:focus-visible{border-color:#60a5fab3}body:has(.modal-backdrop) .site-footer{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none}body:has(.modal-backdrop) .site-header{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transform:translateY(-8px)}body.modal-open .site-footer{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none}body.modal-open .site-header{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transform:translateY(-8px)}.section-reveal{animation:fadeIn .28s ease both}.project-groups a,.projects-toolbar a{text-decoration:none}.project-missing-inline,.missing-data-note{margin-top:.42rem;font-size:.76rem;color:#fbbf24}.project-missing-inline{display:none}.icon-card-grid.list .project-missing-inline{display:block}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:320;background:#030711bd;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:min(4vh,1.6rem) min(3vw,1rem);display:grid;place-items:center}.modal-card{width:min(880px,100%);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--surface-solid);box-shadow:var(--shadow-hover);position:relative}.modal-close,.gallery-zoom-toggle,.gallery-nav-button{position:absolute;top:.7rem;width:2rem;height:2rem;border-radius:999px;border:1px solid var(--line);background:#0a101cc7;color:var(--accent-soft);display:inline-flex;align-items:center;justify-content:center;z-index:2}:root[data-theme=light] .modal-close,:root[data-theme=light] .gallery-zoom-toggle,:root[data-theme=light] .gallery-nav-button{background:#fffffff2;color:var(--accent);border-color:#3b82f63d}.modal-close{right:.7rem}.modal-close-quiet{top:.9rem;right:.9rem;width:1.7rem;height:1.7rem;opacity:.82}.modal-close-quiet:hover,.modal-close-quiet:focus-visible{opacity:1}.gallery-zoom-toggle{right:3rem}.gallery-nav-button{top:50%;transform:translateY(-50%);width:2.1rem;height:2.1rem}.gallery-nav-prev{left:.7rem}.gallery-nav-next{right:.7rem}.gallery-nav-button:hover,.gallery-nav-button:focus-visible{border-color:#60a5fab8}.modal-cover{width:100%;min-height:240px;max-height:360px;border-bottom:0;background:#0b121d;position:relative}.modal-cover img{width:100%;height:100%;min-height:240px;object-fit:cover;display:block}.modal-cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,#02081400,#02081400)}.modal-content{padding:1rem;display:grid;gap:.45rem}.project-modal-card .modal-content{background:#040a12f0}:root[data-theme=light] .project-modal-card .modal-content{background:#fffffff5}.modal-links{margin-top:.4rem;display:flex;flex-wrap:wrap;gap:.45rem}.modal-links a{border:1px solid var(--line);border-radius:999px;padding:.35rem .62rem;display:inline-flex;align-items:center;gap:.35rem;text-decoration:none;background:#10182685}.modal-links a svg{color:var(--accent-soft)}:root[data-theme=light] .modal-links a{background:#ffffffeb}.modal-links a:hover,.modal-links a:focus-visible{border-color:#60a5fab8}.skill-modal-card{width:min(560px,100%)}.skill-modal-title{display:inline-flex;align-items:center;gap:.45rem}.gallery-modal-card{width:min(1200px,100%);max-height:92vh}.gallery-modal-figure{margin:0;position:relative;min-height:min(68vh,620px);display:grid;place-items:center;background:#03070f4d}.gallery-modal-figure img{width:100%;max-height:84vh;object-fit:contain;display:block;background:#03070f;opacity:1;transition:transform .2s ease}.gallery-modal-figure img.is-describable{cursor:pointer}.gallery-modal-figure.is-loading img{opacity:0}:root[data-theme=light] .gallery-modal-figure img{background:#edf3ff}.gallery-modal-card.is-zoomed .gallery-modal-figure img{transform:scale(1.3);transform-origin:center center}.gallery-modal-figure figcaption{position:absolute;left:0;right:0;bottom:0;padding:.84rem;display:grid;gap:.15rem;background:transparent;z-index:4}:root[data-theme=light] .gallery-modal-figure figcaption{background:transparent}.gallery-modal-figure figcaption strong{color:#f7fbff}:root[data-theme=light] .gallery-modal-figure figcaption strong{color:#0f172a}.gallery-modal-figure figcaption strong{width:fit-content;max-width:100%;padding:.3rem .62rem;border-radius:999px;border:0;background:#060c168f}:root[data-theme=light] .gallery-modal-figure figcaption strong{background:#fffffff0}.gallery-description-trigger{position:absolute;left:50%;bottom:.92rem;transform:translate(-50%);border:1px solid rgba(96,165,250,.32);width:2.02rem;height:2.02rem;border-radius:999px;padding:0;color:#dbe8ff;background:#070d18a8;z-index:5;opacity:0;pointer-events:none;transition:opacity .18s ease,border-color .18s ease,transform .18s ease}.gallery-description-trigger svg{width:.9rem;height:.9rem}.gallery-modal-figure:hover .gallery-description-trigger:not(.is-open),.gallery-modal-figure:focus-within .gallery-description-trigger:not(.is-open){opacity:.96;pointer-events:auto}:root[data-theme=light] .gallery-description-trigger{color:#0f172a;border-color:#3b82f647;background:#ffffffeb}.gallery-description-trigger.is-open{opacity:0;pointer-events:none;transform:translate(-50%)}.gallery-description-panel{position:absolute;left:50%;bottom:3.8rem;transform:translate(-50%);width:min(86vw,760px);border:1px solid rgba(96,165,250,.28);border-radius:14px;padding:.68rem .78rem;color:#dbe8ff;background:#050a12d6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:5;animation:fadeInUp .22s ease both}:root[data-theme=light] .gallery-description-panel{color:#0f172a;border-color:#3b82f63d;background:#fffffff2}@media (hover: none) and (pointer: coarse){.gallery-description-trigger:not(.is-open){opacity:.96;pointer-events:auto}}.experience-note{margin-top:.72rem;font-size:.8rem}.timeline-item.is-secondary-track{opacity:.78}.timeline-item.is-secondary-track h3,.timeline-item.is-secondary-track .company,.timeline-item.is-secondary-track p{color:var(--muted)}.secondary-badge{display:inline-flex;margin-top:.2rem;padding:.14rem .45rem;border:1px solid var(--line);border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.thesis-info-card{min-height:170px}.thesis-info-button{width:100%;min-height:170px;text-align:left;border-radius:18px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);color:inherit;font:inherit;background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:.9rem;display:grid;gap:.45rem;cursor:pointer;transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease}.thesis-info-button:hover,.thesis-info-button:focus-visible{border-color:#60a5fa94;transform:translateY(-3px);box-shadow:var(--shadow-hover)}.research-link-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.research-link-hint{width:auto;height:auto;border-radius:0;border:0;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-soft);background:transparent;padding:0;flex-shrink:0}.thesis-detail-list{margin-top:.3rem;display:grid;gap:.55rem}.thesis-detail-item{margin:0}.collapsible-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;gap:.5rem;border:0;padding:0;background:transparent;color:inherit;cursor:pointer}.interactive-item{transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.interest-item-button{width:100%;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font:inherit;background:#0b111b75;display:grid;gap:.36rem}:root[data-theme=light] .interest-item-button{background:#ffffffeb}.interest-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.interest-head h3,.interest-summary{margin:0}.interest-extra{margin-top:.12rem;display:grid;gap:.4rem}.interest-item-button.is-expanded{border-color:#60a5fab8}.interactive-item:hover,.interactive-item:focus-visible{border-color:#60a5fab8;transform:translateY(-2px);box-shadow:var(--shadow-hover)}[data-tooltip]{position:relative}[data-tooltip]:before{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + .35rem);transform:translate(-50%) translateY(4px);width:max-content;max-width:240px;white-space:normal;text-align:center;font-size:.7rem;line-height:1.2;color:#e9f0ff;background:#030710eb;border:1px solid var(--line);border-radius:8px;padding:.26rem .42rem;opacity:0;pointer-events:none;z-index:200;transition:opacity .16s ease,transform .16s ease}:root[data-theme=light] [data-tooltip]:before{color:#0f172a;background:#fffffff7;border-color:#3b82f647;box-shadow:0 8px 20px #1b396e29}[data-tooltip]:hover:before,[data-tooltip]:focus-visible:before{opacity:1;transform:translate(-50%) translateY(0)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (hover: none) and (pointer: coarse){.spotlight-card:before{opacity:0!important}.bento-card:hover,.experience-card:hover,.project-card:hover,.research-card article:hover,.contact-card:hover,.contact-form:hover,.skill-group:hover,.experience-block:hover,.gallery-item:hover{transform:none;box-shadow:var(--shadow)}.clickable-card:active,.project-mini:active{transform:scale(.99);border-color:#60a5fab8}.project-mini.is-interactive .card-open-indicator{opacity:1;transform:translateY(0)}}@media (min-width: 760px){.menu-toggle{display:none}.site-nav{position:static;opacity:1;pointer-events:auto;transform:none;background:transparent;border:0;padding:0;display:flex;align-items:center;gap:.1rem}.bento-grid{grid-template-columns:repeat(12,minmax(0,1fr))}.bento-intro,.bento-skills,.bento-gallery-teaser{grid-column:span 7}.bento-focus,.bento-experience,.bento-research,.bento-contact{grid-column:span 5}.bento-projects{grid-column:span 7}.projects-grid,.experience-grid,.research-card,.contact-grid,.skills-page-groups,.experience-page-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-card-grid.grid-large{grid-template-columns:repeat(3,minmax(0,1fr))}.icon-card-grid.grid-compact{grid-template-columns:repeat(4,minmax(0,1fr))}.icon-card-grid.list{grid-template-columns:1fr}.gallery-view-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-view-wide{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 430px){.icon-card-grid.grid-large,.icon-card-grid.grid-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-card-grid.list{grid-template-columns:1fr}}@media (min-width: 1024px){.hero-shell{padding:1.55rem}.icon-card-grid.grid-large{grid-template-columns:repeat(4,minmax(0,1fr))}.icon-card-grid.grid-compact{grid-template-columns:repeat(5,minmax(0,1fr))}.gallery-view-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.gallery-view-wide{grid-template-columns:repeat(3,minmax(0,1fr))}}
