/* Four shared type sizes for interface text. Artwork retains its original lettering. */
:root{--type-body:24px;--type-label:28px;--type-item:32px;--type-title:64px}
body.cv08{font-size:var(--type-body)!important}
body.cv08 *{font-size:inherit!important}
body.cv08 :is(.project-type,.project-description,.project-elements,.list-head,.work-screen-hint,.cartridge-description,.line-label small,.ending-caption,.font-credit,.reader-toolbar,.reader-soft-status,.toast,.load-error){font-size:var(--type-body)!important}
body.cv08 :is(.project-name,.toggle-label,.ag-tab-label){font-size:var(--type-label)!important}
body.cv08 .rail nav a,body.cv08 .cartridge-index button{font-size:var(--type-item)!important}
body.cv08 :is(.cartridge-summary h3,.ag-caption strong){font-size:var(--type-title)!important}
body.cv08 .ag-caption small{font-size:var(--type-body)!important}
body.cv08 .cartridge-description{line-height:1.75;max-width:460px}
body.cv08 .cartridge-summary h3{line-height:1.15;overflow-wrap:anywhere}
body.cv08 .cartridge-index button{height:auto;min-height:60px;line-height:1.4}
body.cv08 .line-label small{width:32px;margin-right:16px;font-variant-numeric:tabular-nums}
body.cv08 .ending-caption{letter-spacing:.22em}
body.cv08 .font-credit{line-height:1.6}

/* Increase the 120 × 54 desktop control by 20%, without scaling its text. */
body.cv08 .view-switch .view-toggle{width:144px!important;height:65px!important;border-width:4px}
body.cv08 .view-switch .toggle-knob{top:4px;left:4px;width:48px;height:48px}
body.cv08 .view-switch .label-gallery{left:15px}
body.cv08 .view-switch .label-list{right:15px}
body.cv08 .view-switch .toggle-knob svg{width:24px;height:24px}

/* The lists use reading-sized copy and share their column boundaries. */
body.cv08 .projects.list{padding-inline:0}
body.cv08 .projects.list .project{min-height:176px;padding:28px 0;gap:24px;align-items:center}
body.cv08 .projects.list .case-space{width:108px}
body.cv08 .projects.list .project-name{line-height:1.4;font-weight:800}
body.cv08 .projects.list .project-type{margin-top:8px;line-height:1.5;color:#c5cdc7}
body.cv08 .projects.list .project-description{line-height:1.65;color:#d0d5d0;overflow-wrap:anywhere}
body.cv08 .projects.list .project-elements{gap:8px;flex-wrap:wrap}
body.cv08 .projects.list .project-elements>span{padding:4px 9px;line-height:1.45}
body.cv08 .projects.list .list-head{padding-block:18px;line-height:1.5;gap:24px}
@media(min-width:761px){
 body.cv08 .rail nav a span:not(.dock-icon-tile){line-height:1.4}
 body.cv08 .projects.list :is(.project,.list-head){grid-template-columns:108px minmax(190px,.9fr) minmax(210px,.9fr) minmax(280px,1.65fr) 24px}
 body.cv08 .projects.list .list-head{padding-right:0}
 body.cv08 .projects.list .list-head>span:first-child{grid-column:1 / span 2}
 body.cv08 .collection-heading{padding-inline:0}
 body.cv08 .collection-heading:after{margin-right:154px}
}
@media(min-width:761px) and (max-width:1400px){
 body.cv08 .projects.list :is(.project,.list-head){grid-template-columns:88px minmax(160px,.9fr) minmax(150px,.8fr) minmax(230px,1.4fr) 24px;gap:18px}
 body.cv08 .projects.list .case-space{width:88px}
 body.cv08 #personal-projects.gallery{grid-template-columns:370px minmax(0,1fr)}
 body.cv08 .cartridge-summary{margin-left:16px}
}
@media(max-width:760px){
 :root{--type-body:20px;--type-label:24px;--type-item:30px;--type-title:40px}
 body.cv08 .collection-heading{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto;padding:0;gap:20px;min-height:0;margin-bottom:28px}
 body.cv08 .collection-heading:before,body.cv08 .collection-heading:after{display:none}
 body.cv08 .collection-heading h2{grid-column:1;grid-row:1;justify-self:center}
 body.cv08 .collection-heading .view-switch{position:static;transform:none;grid-column:1;grid-row:2;justify-self:end}
 body.cv08 .projects.list .project{grid-template-columns:76px minmax(0,1fr) 24px;gap:14px;min-height:0;padding-block:24px}
 body.cv08 .projects.list .case-space{width:76px}
 body.cv08 .projects.list .project-description:before{font-size:var(--type-body)!important}
 body.cv08{--bottom-nav-height:86px}
 body.cv08 .rail{padding:8px 6px;height:86px}
 body.cv08 .rail nav a{font-size:var(--type-body)!important}
 body.cv08 .line-label small{width:24px;margin-right:10px}
 body.cv08 .cartridge-index button{min-height:48px}
}

/* React Bits BorderGlow: directional color rim plus unclipped inner/outer bloom.
   David Haz, MIT; assets/vendor/react-bits/LICENSE.md. */
.screen-border-glow{position:absolute;z-index:6;pointer-events:none;overflow:visible;--cursor-angle:45deg;--edge-strength:0;--color-strength:0}
.screen-edge-glow,.screen-border-color,.screen-spotlight{position:absolute;inset:0;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity 650ms cubic-bezier(.22,1,.36,1)}
.screen-edge-glow{inset:-40px;mask-image:conic-gradient(from var(--cursor-angle) at center,#000 2.5%,transparent 10%,transparent 90%,#000 97.5%);mix-blend-mode:plus-lighter}
.screen-edge-glow:before{content:'';position:absolute;inset:40px;border-radius:inherit;box-shadow:inset 0 0 0 1px #d9f4ff,inset 0 0 1px #b5e8ffcc,inset 0 0 3px #a4e3ffb3,inset 0 0 6px #8cd8ff99,inset 0 0 15px #69c9ff80,inset 0 0 25px 2px #56baff66,inset 0 0 50px 2px #479aff40,0 0 1px #b5e8ffcc,0 0 3px #a4e3ffb3,0 0 6px #8cd8ff99,0 0 15px #69c9ff80,0 0 25px 2px #56baff66,0 0 50px 2px #479aff40}
.screen-border-color{padding:1px;background:conic-gradient(from var(--cursor-angle),#a8eeff,#9d8fff,#7fdcfa,#c4dfff,#a8eeff);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.screen-spotlight{z-index:3;mix-blend-mode:screen}
.screen-spotlight{background:radial-gradient(ellipse 520px 420px at var(--screen-x,50%) var(--screen-y,50%),#b3dfff30 0%,#78bfff12 38%,transparent 80%)}
#work-projects.gallery .screen-lit .screen-edge-glow{opacity:var(--edge-strength,0);transition-duration:180ms}
#work-projects.gallery .screen-lit .screen-border-color{opacity:calc(var(--color-strength,0)*.65);transition-duration:180ms}
#work-projects.gallery .screen-lit .screen-spotlight{opacity:1}
#work-projects.list :is(.screen-border-glow,.screen-spotlight){display:none}
@media(prefers-reduced-motion:reduce){#work-projects .screen-edge-glow,#work-projects .screen-border-color,#work-projects .screen-spotlight{transition:none}}

@media(min-width:421px) and (max-width:900px){body.cv08 .rail nav a{font-size:var(--type-label)!important}}
@media(min-width:761px) and (max-width:900px){body.cv08 .rail nav a{gap:8px}body.cv08 .rail nav a .dock-icon-tile{width:32px;height:32px;flex-basis:32px}body.cv08 .rail nav a svg{width:32px;height:32px}}
