/* kurtbestor.net — Spotlight: one work large, the whole gallery right under it, dark glass over the work's own light */
html{background:#0b0b10;-webkit-text-size-adjust:100%;scrollbar-width:none}
html::-webkit-scrollbar{display:none}
html.vw-lock{overflow:hidden}
/* nothing on the page is meant to be selected; the mail address has a copy button instead */
body{margin:0;background:#0b0b10;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,"Geist","Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none}
[hidden]{display:none!important}
.gx{--fg:#ffffff;--fg2:rgba(255,255,255,.74);--scrim:rgba(8,8,14,.6);--chip:rgba(255,255,255,.12);--chip2:rgba(255,255,255,.2);position:relative;min-height:100vh;color:var(--fg)}
.gx a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
.gx button{font:inherit;color:inherit;margin:0;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gx :focus-visible{outline:2px solid #ffffff;outline-offset:3px}

/* the room light: the featured work, blurred, glows behind everything */
.gx-amb{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.gx-ambimg{position:absolute;top:-12%;left:-12%;width:124%;height:124%;object-fit:cover;filter:blur(64px) saturate(1.6);opacity:0;transform:scale(1.06);transition:opacity 1.6s ease,transform 9s linear}
.gx-ambimg.on{opacity:1;transform:scale(1.2)}
.gx-dim{position:absolute;inset:0;background:rgba(8,8,12,.34)}
.gx-deep{position:absolute;inset:0;background:rgba(7,7,11,.56);opacity:0}
.gx-vig{position:absolute;inset:0;background:radial-gradient(120% 100% at 64% 42%,rgba(0,0,0,0) 38%,rgba(0,0,0,.55) 100%)}

.gx-glass{position:relative;background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(255,255,255,.05) 45%,rgba(255,255,255,.1));background-color:rgba(18,18,28,.26);-webkit-backdrop-filter:blur(28px) saturate(180%);backdrop-filter:blur(28px) saturate(180%);box-shadow:0 24px 60px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(255,255,255,.06)}
.gx-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(140deg,rgba(255,255,255,.62),rgba(255,255,255,.1) 32%,rgba(255,255,255,.04) 62%,rgba(255,255,255,.34));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.gx-glass.sm{box-shadow:0 8px 24px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.28)}

.gx-main{position:relative;z-index:1}
.gx-topfade{position:fixed;top:0;left:0;right:0;z-index:5;height:120px;background:linear-gradient(180deg,rgba(8,8,12,.74),rgba(8,8,12,0));opacity:0;pointer-events:none}
.gx-brand{position:fixed;top:22px;left:28px;z-index:6;display:flex;align-items:center;gap:9px;height:44px;padding:0 16px 0 14px;border-radius:22px;font-size:15px;font-weight:600;letter-spacing:-.01em}

/* spotlight: one work large, the gallery already peeking underneath */
.gx-hero{position:relative;height:calc(100vh - 170px);min-height:500px}
.gx-par{position:absolute;inset:0;transform-origin:50% 35%}
.gx-stage{position:absolute;top:92px;bottom:28px;right:6vw;width:46vw;touch-action:pan-y}
.gx-art{position:absolute;inset:0;margin:auto;display:block;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:20px;box-shadow:0 40px 120px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.08);opacity:0;transform:scale(1.03);transition:opacity 1.1s ease,transform 1.6s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.gx-art.on{opacity:1;transform:none}
.gx-stagebtn{position:absolute;inset:0;width:100%;height:100%;cursor:zoom-in}
.gx-card{position:absolute;left:6vw;top:50%;width:380px;box-sizing:border-box;padding:32px;border-radius:34px;transform:translateY(-44%)}
.gx-h1{margin:16px 0 0;font-size:52px;line-height:54px;font-weight:600;letter-spacing:-.035em}
.gx-sub{margin:10px 0 0;font-size:18px;line-height:25px;color:rgba(255,255,255,.82)}
.gx-rule{height:1px;margin:26px 0 18px;background:rgba(255,255,255,.14)}
.gx-nk{margin:0;font-size:12px;line-height:16px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--fg2)}
.gx-nt{margin:6px 0 0;font-size:21px;line-height:27px;font-weight:600;letter-spacing:-.02em}
.gx-bars{display:flex;margin:8px 0 0 -8px}
.gx-bar{display:flex;align-items:center;justify-content:center;width:28px;height:40px}
.gx-bar span{display:block;width:16px;height:3px;border-radius:2px;background:rgba(255,255,255,.32);transition:background .4s ease,width .5s cubic-bezier(.32,.72,0,1)}
.gx-bar.on span{width:24px;background:#ffffff}
.gx-mcap{display:none}

/* work: the whole body of work, right under the spotlight */
.gx-work{position:relative;padding:4px 6vw 30px;scroll-margin-top:84px}
.gx-whead{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px 20px;padding:0 0 22px}
.gx-h2{margin:0;font-size:34px;line-height:40px;font-weight:600;letter-spacing:-.028em}
.gx-h2 span{margin-left:12px;font-size:15px;font-weight:500;letter-spacing:0;color:var(--fg2);font-variant-numeric:tabular-nums}
.gx-seg{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:560px;max-width:100%;height:44px;padding:4px;border-radius:22px;box-sizing:border-box}
.gx-segthumb{position:absolute;top:4px;left:4px;width:calc((100% - 8px) / 5);height:36px;border-radius:18px;background:rgba(255,255,255,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.32);transition:transform .55s cubic-bezier(.32,.72,0,1)}
.gx-segbtn{position:relative;z-index:1;height:36px;border-radius:18px;font-size:13.5px;font-weight:600;color:rgba(255,255,255,.72);white-space:nowrap;transition:color .25s ease}
.gx-segbtn.on,.gx-segbtn:hover{color:#ffffff}
/* without the script the tiles sit in a plain grid; site.js lays them out in justified rows */
.gx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.gx-grid .gx-tile{aspect-ratio:4/5}
.js .gx-grid{display:flex;flex-direction:column;gap:14px;min-height:60vh}
.js .gx-grid .gx-tile{aspect-ratio:auto}
.gx-row{display:flex;gap:14px}
.gx-tile{position:relative;display:block;min-width:0;border-radius:18px;overflow:hidden;cursor:zoom-in;background:rgba(255,255,255,.05);box-shadow:0 10px 30px rgba(0,0,0,.25);transition:transform .5s cubic-bezier(.32,.72,0,1),box-shadow .5s ease}
.gx-tile::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(125deg,rgba(255,255,255,.24),rgba(255,255,255,0) 36%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);opacity:.35;transition:opacity .4s ease;pointer-events:none}
.gx-tile:hover{transform:translateY(-4px);box-shadow:0 24px 56px rgba(0,0,0,.42)}
.gx-tile:hover::after{opacity:1}
.gx-timg{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
.js .gx-timg{opacity:0;transition:opacity .5s ease}
.js .gx-timg.ld{opacity:1}
.gx-tcap{position:absolute;left:10px;bottom:10px;z-index:1;max-width:calc(100% - 20px);box-sizing:border-box;padding:6px 11px;border-radius:11px;background:rgba(14,14,20,.62);font-size:12.5px;line-height:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transform:translateY(4px);transition:opacity .25s ease,transform .3s ease;pointer-events:none}
.gx-tile:hover .gx-tcap,.gx-tile:focus-visible .gx-tcap{opacity:1;transform:none}

/* about */
.gx-aboutsec{display:flex;justify-content:center;padding:70px 6vw calc(170px + env(safe-area-inset-bottom));scroll-margin-top:24px}
.gx-acard{width:min(860px,100%);box-sizing:border-box;padding:32px;border-radius:40px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:32px;align-items:center}
.gx-aimg{display:block;width:100%;height:auto;aspect-ratio:512/336;border-radius:24px;object-fit:cover}
.gx-ah{margin:0;font-size:34px;line-height:40px;font-weight:600;letter-spacing:-.025em}
.gx-ap{margin:10px 0 0;font-size:16.5px;line-height:25px;color:rgba(255,255,255,.82)}
.gx-mailrow{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:18px}
.gx-amail{display:inline-block;font-size:20px;line-height:26px;font-weight:600;letter-spacing:-.015em;border-bottom:1px solid rgba(255,255,255,.4)}
.gx-copy{position:relative;flex:none;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:18px;background:rgba(255,255,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 0 0 1px rgba(255,255,255,.1);transition:background .2s ease,transform .2s ease}
.gx-copy:hover{background:rgba(255,255,255,.2)}
.gx-copy:active{transform:scale(.92)}
.gx-copy svg{position:absolute;transition:opacity .2s ease,transform .3s cubic-bezier(.32,.72,0,1)}
.gx-copy .ok,.gx-copy.done .cp{opacity:0;transform:scale(.6)}
.gx-copy.done .ok{opacity:1;transform:none}
.gx-copied{font-size:13px;font-weight:600;color:var(--fg2);opacity:0;transform:translateX(-4px);transition:opacity .2s ease,transform .3s ease}
.gx-copy.done + .gx-copied{opacity:1;transform:none}
.gx-chips{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.gx-chip{display:inline-flex;align-items:center;height:40px;padding:0 15px;border-radius:20px;font-size:13.5px;font-weight:500;background:rgba(255,255,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 0 0 1px rgba(255,255,255,.1);transition:background .2s ease}
.gx-chip:hover{background:rgba(255,255,255,.2)}

/* tab bar: follows whichever section is on screen */
.gx-tabs{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));z-index:7;display:flex;padding:6px;border-radius:32px;transform:translateX(-50%)}
.gx-tabthumb{position:absolute;top:6px;left:6px;width:132px;height:48px;border-radius:24px;background:rgba(255,255,255,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.34),inset 0 0 0 1px rgba(255,255,255,.08);transition:transform .6s cubic-bezier(.32,.72,0,1)}
.gx-tab{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;width:132px;height:48px;border-radius:24px;color:rgba(255,255,255,.7);font-size:14px;font-weight:600;letter-spacing:-.005em;transition:color .25s ease}
.gx-tab.on,.gx-tab:hover{color:#ffffff}

/* viewer: the picture grows out of the thumbnail you clicked */
.vw{position:fixed;inset:0;z-index:30;visibility:hidden;pointer-events:none;touch-action:none}
.vw.on{visibility:visible;pointer-events:auto}
.vw-bg{position:absolute;inset:0;width:100%;height:100%;background:rgba(8,8,14,.66);-webkit-backdrop-filter:blur(30px) saturate(150%);backdrop-filter:blur(30px) saturate(150%);opacity:0;transition:opacity .45s ease;cursor:zoom-out}
.vw.on .vw-bg{opacity:1}
.vw[data-closing] .vw-bg,.vw[data-closing] .vw-ui{opacity:0}
.vw-slot{position:absolute;overflow:hidden;border-radius:14px;background:rgba(255,255,255,.04) center/cover no-repeat;box-shadow:0 40px 120px rgba(0,0,0,.55);transform-origin:0 0;touch-action:none}
.vw-slot.is-idle{visibility:hidden}
.vw-slot.is-out{animation:vwOut .4s ease both;pointer-events:none}
.vw-slot.is-in.swap{animation:vwIn .55s cubic-bezier(.2,.8,.2,1) both}
.vw-slot.is-in.swap.back{animation-name:vwInBack}
.vw-zoom{width:100%;height:100%;transform-origin:0 0;cursor:grab;touch-action:none}
.vw-zoom img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease;pointer-events:none;-webkit-user-drag:none}
.vw-zoom img.ld{opacity:1}
.vw-ui{position:absolute;left:0;right:0;opacity:0;transition:opacity .3s ease .1s}
.vw.on .vw-ui{opacity:1}
.vw-top{top:calc(16px + env(safe-area-inset-top));display:flex;justify-content:flex-end;padding:0 20px}
.vw-bottom{bottom:calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:12px;padding:0 20px}
.vw-cap{display:flex;align-items:baseline;gap:10px;margin:0;max-width:100%;white-space:nowrap;overflow:hidden;font-size:13px;color:rgba(255,255,255,.7)}
.vw-cap b{color:#ffffff;font-weight:600}
.vw-row{display:flex;align-items:center;gap:10px;max-width:100%}
.vw-strip{position:relative;display:flex;gap:5px;padding:6px;border-radius:14px;background:rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.14);overflow-x:auto;scrollbar-width:none;max-width:min(980px,calc(100vw - 150px));touch-action:pan-x}
.vw-strip::-webkit-scrollbar{display:none}
.vw-th{flex:none;position:relative;width:38px;height:38px;border-radius:7px;overflow:hidden;opacity:.5;transition:opacity .2s ease}
.vw-th img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
.vw-th:hover{opacity:.85}
.vw-th.on{opacity:1;box-shadow:inset 0 0 0 2px #ffffff}
.vw-round{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);color:#ffffff;box-shadow:inset 0 1px 0 rgba(255,255,255,.24);transition:background .2s ease,transform .2s ease}
.vw-round:hover{background:rgba(255,255,255,.2)}
.vw-round:active{transform:scale(.92)}
@keyframes vwIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes vwInBack{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}
@keyframes vwOut{from{opacity:1}to{opacity:0}}

/* phone: the work fills most of the screen, the first thumbnails show underneath */
@media (max-width:760px){
.gx-brand{top:calc(12px + env(safe-area-inset-top));left:12px;height:40px;font-size:14px}
.gx-topfade{height:84px}
.gx-hero{height:calc(100vh - 240px);height:calc(100svh - 240px);min-height:440px}
.gx-stage{top:0;bottom:0;left:0;right:0;width:auto}
.gx-art{width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;border-radius:0;box-shadow:none}
.gx-stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.42) 0%,rgba(0,0,0,0) 22%,rgba(0,0,0,0) 52%,rgba(0,0,0,.74) 100%)}
.gx-card{display:none}
.gx-mcap{display:block;position:absolute;left:20px;right:20px;bottom:16px;z-index:3;pointer-events:none}
.gx-mcap .gx-bars{pointer-events:auto}
.gx-mt{margin:5px 0 0;font-size:26px;line-height:30px;font-weight:600;letter-spacing:-.025em}
.gx-mcap .gx-bar{width:24px}
.gx-mcap .gx-bar span{width:12px}
.gx-mcap .gx-bar.on span{width:20px}
.gx-work{padding:14px 0 20px;scroll-margin-top:60px}
.gx-whead{padding:0 12px 12px}
.gx-h2{display:none}
/* five equal segments don't fit a narrow phone, so the categories become a row of chips */
.gx-seg.gx-glass{display:flex;flex:none;gap:6px;width:calc(100% + 24px);max-width:none;height:auto;margin:0 -12px;padding:2px 12px;border-radius:0;overflow-x:auto;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;scrollbar-width:none}
.gx-seg::before,.gx-segthumb{display:none}
.gx-seg::-webkit-scrollbar{display:none}
.gx .gx-segbtn{flex:none;height:36px;padding:0 14px;border-radius:18px;font-size:13px;background:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.16)}
.gx .gx-segbtn.on{background:rgba(255,255,255,.92);color:#111114}
.gx-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:0 2px}
.gx-grid .gx-tile,.js .gx-grid.sq .gx-tile{aspect-ratio:1/1;border-radius:0;box-shadow:none}
.js .gx-grid.sq{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:0 2px;min-height:0}
.gx-tile:hover{transform:none;box-shadow:none}
.gx-tile:active{opacity:.8}
.gx-tcap{display:none}
.gx-aboutsec{padding:40px 12px calc(120px + env(safe-area-inset-bottom))}
.gx-acard{padding:18px;border-radius:30px;gap:18px}
.gx-ah{font-size:28px;line-height:34px}
.gx-tabs{bottom:calc(16px + env(safe-area-inset-bottom));padding:5px;border-radius:30px}
.gx-tabthumb{top:5px;left:5px;width:96px;height:54px;border-radius:27px}
.gx-tab{flex-direction:column;gap:3px;width:96px;height:54px;border-radius:27px;font-size:11px}
.vw-strip{max-width:calc(100vw - 130px)}
}
@media (prefers-reduced-motion:reduce){.gx *{animation-duration:.01s!important;transition-duration:.01s!important}}
