/* Self-hosted OFL fonts (BRAND.md §9), Latin subset from Fontsource 5.3.0. Licences in fonts/OFL-*.txt. */
@font-face{font-family:'Instrument Serif';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Instrument Serif';font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-latin-400-italic.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-latin-wght-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--ink:#111;--paper:#f2efe8;--graphite:#555;--mist:#d8d5ce;--accent:#c85a32;--olive:#3d4635;--sand:#e6e0d3;--bg:var(--paper);--text:var(--ink);--muted:var(--graphite);--rule:var(--mist);--serif:'Instrument Serif',Georgia,serif;--sans:'Inter',Arial,sans-serif;--mono:'IBM Plex Mono',monospace;color-scheme:light}
:root[data-theme=dark]{--bg:#111;--text:#f2efe8;--muted:#d8d5ce;--rule:#555;--sand:var(--bg);color-scheme:dark}
*{box-sizing:border-box}html.smooth-scroll{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.55}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:4px}button,input,select{font:inherit;color:inherit}button{background:none;border:1px solid var(--text);padding:.45rem .7rem;cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.wrap{width:min(1320px,calc(100% - 96px));margin:auto}.site-header{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--rule);padding:.4rem 0}.header-inner{display:flex;align-items:center;gap:2rem;min-height:44px}.site-menu{display:flex;align-items:center;gap:2rem;flex:1}.brand{font:500 .8rem var(--mono);letter-spacing:.08em;text-decoration:none;white-space:nowrap}.brand span{color:var(--muted);text-transform:uppercase}.nav{display:flex;align-items:center;flex:1;justify-content:center}.nav ul{display:flex;gap:1.3rem;align-items:center;list-style:none;margin:0;padding:0}.nav .nav-home,.nav .nav-sub{display:none}.nav a{display:inline-flex;align-items:center;min-height:44px;font-size:.82rem;text-decoration:none;border-bottom:2px solid transparent}.nav a[aria-current]{border-bottom-color:var(--accent)}.nav a:hover,.text-link:hover{color:var(--accent)}.tools,.tool-group{display:flex;align-items:center}.tools{gap:.6rem}.tools button{border:0;min-width:44px;min-height:44px;padding:0 .35rem;text-transform:uppercase;font: .7rem var(--mono)}.menu-toggle{display:none}main [id]{scroll-margin-top:calc(var(--header-offset,4rem) + 1rem)}.tools button[aria-pressed=true]{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:var(--bg);padding:.6rem;z-index:40}html:not(.js) .skip-player{display:none}
.hero{min-height:calc(100vh - 72px);padding:clamp(5rem,10vw,9rem) 0 2rem;display:grid;grid-template-columns:7fr 4fr;grid-template-rows:1fr auto;column-gap:clamp(2rem,7vw,9rem);position:relative}.hero-copy{align-self:center}.eyebrow,.kicker,.article-index,.hero-meta,.hero-bottom,small,.metric,time{font: .7rem var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:.98;margin:0}h1{font-size:clamp(5rem,12vw,11rem);letter-spacing:-.02em;margin:.8rem 0 1.6rem}h1 em{color:var(--accent);font-style:italic}.descriptor{font-size:clamp(1.3rem,2.5vw,2.5rem);max-width:23ch;line-height:1.1;margin:0 0 1.5rem}.intro{max-width:49ch;font-size:1.05rem}.hero-meta{display:flex;gap:.8rem;margin-top:3rem}.hero-image{align-self:center;position:relative}.hero-image img{width:100%;height:min(62vh,620px);object-fit:cover;filter:grayscale(100%);display:block}.hero-bottom{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:1rem;display:flex;justify-content:space-between;margin-top:5rem}.hero-bottom a{text-decoration:none;color:var(--text)}
.section{padding:clamp(6rem,11vw,11rem) 0;border-top:1px solid var(--rule)}.section-head{display:grid;grid-template-columns:1fr 2fr;gap:3rem;margin-bottom:4rem}.section-head h2,.section-head h3,.facet-layout h3,.foundations h3,.background-head h2,.contact h2{font-size:clamp(2.8rem,6vw,6rem);max-width:11ch;letter-spacing:-.01em}.section-intro{max-width:48ch;font-size:1.05rem;margin-top:.25rem}.writing-feature{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,7vw,8rem);padding:3.5rem 0;border-top:2px solid var(--text);border-bottom:1px solid var(--rule)}.writing-feature h3{font-size:clamp(2rem,4vw,4.5rem);max-width:13ch;margin:.7rem 0 1.3rem}.writing-feature p:not(.article-index){max-width:48ch;color:var(--muted)}.text-link{display:inline-block;margin-top:1rem;font: .75rem var(--mono);text-transform:uppercase}.feature-data{display:flex;flex-direction:column;justify-content:center}.feature-data strong{font:clamp(4rem,9vw,9rem) var(--serif);line-height:.8;color:var(--accent)}.feature-data span{font: .8rem var(--mono);text-transform:uppercase;margin:1rem 0 2rem}.feature-data svg{width:100%;overflow:visible}.feature-data polyline{fill:none;stroke:var(--accent);stroke-width:3}.feature-data circle{fill:var(--bg);stroke:var(--accent);stroke-width:3}.feature-data small{margin-top:1.2rem}.writing-item{display:grid;grid-template-columns:1fr 2fr .8fr;gap:2rem;padding:2rem 0;border-bottom:1px solid var(--rule);align-items:start}.writing-item h3{font-size:clamp(1.7rem,3.4vw,3.5rem);max-width:16ch}.writing-item p{color:var(--muted);max-width:48ch}.writing-item .metric{justify-self:end;text-align:right}.writing-dark{background:var(--ink);color:var(--paper);padding:3rem 2rem;border-bottom:0}.writing-dark p,.writing-dark .metric,.writing-dark .article-index{color:var(--mist)}.writing-dark a{color:var(--paper)}.writing-wide{padding-left:10%;}.facets-section{background:var(--accent);color:#000;border:0}.facets-section .kicker,.facets-section .section-intro{color:#000}.facet-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:5rem}.facet-index{border-top:1px solid var(--ink)}.facet-index>a,.facet-index details{display:grid;grid-template-columns:3rem 1fr 2rem;gap:1rem;align-items:center;padding:1.3rem 0;border-bottom:1px solid var(--ink);text-decoration:none}.facet-index b,.facet-index i{font: .75rem var(--mono);font-style:normal}.facet-index span{font:clamp(1.6rem,3vw,3rem) var(--serif)}.facet-index details::details-content{grid-column:2/4;display:block}.facet-index p{margin:0 0 1rem;max-width:40ch}.facet-index p span{font:inherit}.facet-index summary{display:contents;cursor:pointer;list-style:none}.experience-section .section-head{margin-bottom:2rem}.experience-section label{display:block;font:.7rem var(--mono);text-transform:uppercase;margin-top:2rem}.experience-section select{background:transparent;border:0;border-bottom:1px solid var(--text);padding:.5rem 0;width:100%;max-width:20rem}.experience-list article{display:grid;grid-template-columns:1fr 3fr;border-top:1px solid var(--rule);padding:1.6rem 0}.experience-list article:last-child{border-bottom:1px solid var(--rule)}.experience-list h3{font-size:clamp(1.5rem,2.5vw,2.6rem);margin-bottom:.5rem}.experience-list p{color:var(--muted);max-width:60ch}.foundations-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:8rem}.foundations ol{margin:3rem 0 0;padding:0;list-style:none;counter-reset:edu}.foundations li{counter-increment:edu;border-top:1px solid var(--rule);padding:1.3rem 0;font-size:1.15rem}.foundations li:before{content:'0' counter(edu);font: .7rem var(--mono);color:var(--accent);margin-right:1.5rem}.foundations small{display:block;margin:1rem 0 0 3rem;text-transform:none}.skills-block{border-left:1px solid var(--rule);padding-left:3rem}.skills-block p{border-top:1px solid var(--rule);padding:1rem 0;margin:0;color:var(--muted)}.skills-block strong{color:var(--text)}.contact-section{background:var(--text);color:var(--bg);border:0}.contact{display:grid;grid-template-columns:1.5fr 1fr;gap:4rem}.contact .kicker{color:var(--mist)}:root[data-theme=dark] .contact .kicker{color:var(--graphite)}.contact-links{border-top:1px solid var(--muted)}.contact-links a{display:flex;justify-content:space-between;padding:1.1rem 0;border-bottom:1px solid var(--muted);text-decoration:none;font-size:1.15rem}.contact-links b{font-weight:400}.footer{padding:1.5rem 0 2rem;border-top:1px solid var(--rule);font:.7rem var(--mono);color:var(--muted)}
@media(min-width:701px){.site-menu{flex-wrap:wrap;row-gap:0;justify-content:flex-end}}
@media(max-width:700px){.wrap{width:calc(100% - 32px)}.site-header{padding:.25rem 0}.header-inner{flex-wrap:wrap;gap:0 .75rem}.site-menu{flex-wrap:wrap;gap:0 .75rem;flex-basis:100%}.nav{order:3;flex-basis:100%;justify-content:flex-start;overflow:auto}.nav ul{gap:1rem}.nav a{font-size:.72rem;white-space:nowrap}html.js .header-inner{flex-wrap:nowrap}html.js .menu-toggle{display:inline-flex;align-items:center;margin-left:auto;min-height:44px;min-width:44px;padding:0 .2rem;border:0;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.08em}html.js .menu-toggle[aria-expanded=true]{color:var(--accent)}html.js .site-menu{display:none}html.js.menu-open .site-menu{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:2rem;position:absolute;top:100%;left:0;right:0;height:calc(100vh - 100%);height:calc(100dvh - 52px);overflow:auto;padding:1.5rem 16px 2rem;background:var(--bg);border-top:1px solid var(--rule)}html.menu-open body{overflow:hidden}html.js.menu-open .nav{order:0;flex:none;display:block;overflow:visible}html.js.menu-open .nav ul{flex-direction:column;align-items:stretch;gap:0}html.js.menu-open .nav .nav-home,html.js.menu-open .nav .nav-sub{display:block}html.js.menu-open .nav a{display:flex;font:2.1rem/1.1 var(--serif);white-space:normal;padding:.55rem 0;border-bottom:1px solid var(--rule)}html.js.menu-open .nav-sub a{font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:.2rem 0 .2rem 1.5rem}html.js.menu-open .nav a[aria-current]{color:var(--accent);border-bottom-color:var(--accent)}html.js.menu-open .tools{flex-wrap:wrap;gap:1rem 1.5rem}.hero{min-height:auto;padding:4rem 0 1.5rem;display:flex;flex-direction:column}.hero-copy{order:1}.hero-image{order:2;margin:3rem 13% 0 0}.hero-image img{height:62vw;max-height:340px}.hero-bottom{order:3;margin-top:2rem;gap:1rem;flex-direction:column}.hero-bottom a{font-size:.8rem}.section{padding:5rem 0}.section-head,.facet-layout,.foundations-grid,.contact{grid-template-columns:1fr;gap:2rem}.section-head{margin-bottom:2.5rem}.section-head h2,.section-head h3,.facet-layout h3,.foundations h3,.background-head h2,.contact h2{font-size:clamp(2.8rem,14vw,5rem)}.writing-feature{grid-template-columns:1fr;gap:2rem;padding:2rem 0}.writing-feature h3{font-size:2.4rem}.writing-item{grid-template-columns:1fr;gap:.8rem;padding:1.5rem 0}.writing-item h3{font-size:2.1rem}.writing-item .metric{justify-self:start;text-align:left}.writing-dark{padding:2rem 1rem}.writing-wide{padding-left:0}.facet-index span{font-size:1.8rem}.experience-list article{grid-template-columns:1fr;gap:.6rem}.experience-list time{font-size:.65rem}.foundations ol{margin-top:2rem}.skills-block{border-left:0;border-top:1px solid var(--rule);padding:3rem 0 0}.contact{gap:3rem}}
@media(prefers-reduced-motion:reduce){html.smooth-scroll{scroll-behavior:auto}}@media print{:root,:root[data-theme=dark]{--muted:#555;--rule:#ccc}.site-header,.tools,.hero-image,.hero-bottom,.no-print{display:none}.wrap{width:100%}.section{padding:1rem 0}.hero{min-height:0;padding:1rem 0}body{background:#fff;color:#111;font-size:9pt}.contact-section{background:#fff;color:#111}.contact .kicker,.writing-dark .article-index{color:var(--muted)}.writing-dark{background:#eee;color:#111}.foundations-grid{grid-template-columns:1fr 1fr}}

/* V2 catalogue and documentary CV */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.music-hero-copy{padding:clamp(1.75rem,3vw,2.5rem) 0 1.75rem}.music-hero h1{font-size:clamp(3.4rem,7vw,7rem);line-height:.95;letter-spacing:-.02em;margin:0}.music-tagline{margin:.9rem 0 0;font:.8rem var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.catalog-count{font:.72rem var(--mono);text-transform:uppercase;color:var(--muted);white-space:nowrap}.music-toolbar{display:grid;grid-template-columns:1fr 13rem;gap:1rem;margin:2.5rem 0}.music-toolbar input,.music-toolbar select{background:transparent;border:0;border-bottom:1px solid var(--text);border-radius:0;padding:.8rem 0;min-width:0}.empty-state{padding:3rem 0;border-top:1px solid var(--rule)}.cv-page{padding-bottom:3rem}.cv-heading{display:flex;justify-content:space-between;gap:3rem;border-bottom:2px solid var(--text);padding:4rem 0 2rem}.cv-heading h1{font-size:clamp(4rem,8vw,8rem);margin:.5rem 0}.cv-role{font-size:1.2rem;margin:0}.cv-contact{text-align:right;font:.75rem var(--mono);color:var(--muted);padding-top:1rem}.cv-contact p{margin:.25rem 0}.cv-grid{display:grid;grid-template-columns:1fr 3fr;gap:3rem;border-top:0;padding:2rem 0;border-bottom:1px solid var(--rule)}.cv-grid>h2{font-size:1.9rem;max-width:9ch}.cv-grid p{margin-top:0;max-width:72ch}.cv-entry{display:grid;grid-template-columns:8rem 1fr;column-gap:1.5rem;margin:0 0 1.2rem;padding:0;border:0}.cv-entry .cv-date{grid-row:span 2;font:.68rem var(--mono);color:var(--muted);text-transform:uppercase}.cv-entry h3{font:500 1.05rem var(--sans);line-height:1.2;margin:0}.cv-entry>p:last-child{grid-column:2;margin:.25rem 0 0;color:var(--muted)}.cv-education p,.cv-skills p{border-bottom:1px solid var(--rule);padding-bottom:.75rem}.cv-education span:not(.cv-degree){color:var(--muted)}.cv-skills{columns:2;column-gap:2rem}.cv-skills p{break-inside:avoid}.cv-skills strong{display:block;margin-bottom:.25rem}
@media(max-width:700px){.music-toolbar{grid-template-columns:1fr;margin:1.5rem 0}.cv-heading{display:block;padding-top:3rem}.cv-contact{text-align:left;padding-top:2rem}.cv-grid{grid-template-columns:1fr;gap:1rem;padding:1.5rem 0}.cv-grid>h2{font-size:1.6rem;max-width:none}.cv-entry{grid-template-columns:1fr;gap:.3rem}.cv-entry .cv-date{grid-row:auto}.cv-entry>p:last-child{grid-column:auto}.cv-skills{columns:1}}
@media print{ @page{size:A4;margin:10mm}.cv-page{width:100%;padding:0}.cv-heading{padding:0 0 4mm}.cv-heading h1{font-size:32pt;margin:2mm 0}.cv-role{font-size:10pt}.cv-contact{font-size:7.5pt;padding-top:2mm}.cv-grid{grid-template-columns:34mm 1fr;gap:7mm;padding:3mm 0}.cv-grid>h2{font-size:12pt}.cv-grid p{font-size:8.5pt;line-height:1.25}.cv-entry{grid-template-columns:25mm 1fr;column-gap:3mm;margin-bottom:2mm}.cv-entry .cv-date,.cv-contact,.cv-education span:not(.cv-degree){font-size:7pt}.cv-entry h3{font-size:9pt}.cv-entry>p:last-child{font-size:8pt}.cv-skills{columns:2}.footer{display:none}}

/* Music player: one active release, one audio element, compact playlist */
.music-player{padding:clamp(2rem,3.5vw,3rem) 0 clamp(3rem,6vw,5rem)}
.music-player+.music-catalog{padding-top:clamp(3rem,6vw,5rem)}
.now-playing{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(1.5rem,4vw,4rem);align-items:end}
.np-art{grid-column:1/6;margin:0;position:relative}
.np-art img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;background:var(--rule)}
.np-info{grid-column:6/-1;min-width:0;border-top:2px solid var(--text);padding-top:1rem}
.np-index{color:var(--text)}
.np-title{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,5vw,5.25rem);line-height:.95;letter-spacing:-.01em;margin:1rem 0 .8rem;overflow-wrap:anywhere}
.np-artist{font-size:1.25rem;margin:0}
.np-meta{font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.5rem 0 0}
.np-credits{display:grid;grid-template-columns:minmax(0,10rem) 1fr;gap:1rem;border-top:1px solid var(--rule);margin-top:1.5rem;padding-top:.9rem}
.np-credits p{margin:0;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.np-credits ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem 1.25rem}
.np-credits li{font-size:1rem}
.np-controls{display:flex;align-items:center;gap:.75rem;margin-top:1.5rem}
.ctl{display:inline-grid;place-items:center;width:3rem;height:3rem;padding:0;border:1px solid var(--text);background:transparent;color:var(--text)}
.ctl svg{width:1rem;height:1rem;fill:currentColor}
.ctl:hover{border-color:var(--accent);color:var(--accent)}
.ctl-play{width:4.25rem;height:4.25rem;background:var(--text);color:var(--bg)}
.ctl-play:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.ctl-play svg{width:1.35rem;height:1.35rem}
.ctl-play .icon-pause,.ctl-play[data-state=playing] .icon-play{display:none}
.ctl-play[data-state=playing] .icon-pause{display:block}
.np-progress{margin-top:1.5rem}
.np-progress input{display:block;width:100%;margin:0;accent-color:var(--accent);cursor:pointer}
.np-progress input:disabled{cursor:default}
.np-progress input:focus-visible,.music-toolbar input:focus-visible,.pl-row:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.np-time{display:flex;justify-content:space-between;font:.7rem var(--mono);color:var(--muted);margin:.4rem 0 0}
.np-status{min-height:1.2em;margin:.75rem 0 0;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.playlist-head{display:flex;justify-content:space-between;align-items:end;gap:2rem}
.playlist-head h2{font-size:clamp(2.4rem,5vw,4.5rem);letter-spacing:-.01em}
.playlist{list-style:none;margin:0;padding:0;border-top:2px solid var(--text)}
.playlist li{border-bottom:1px solid var(--rule)}
.pl-row{display:grid;grid-template-columns:2.25rem 3.5rem minmax(0,1fr) minmax(0,14rem) 3.5rem 6rem;gap:1rem;align-items:center;width:100%;padding:.7rem .5rem;border:0;border-left:2px solid transparent;background:transparent;color:var(--text);text-align:left}
.pl-row:hover{background:color-mix(in srgb,var(--rule) 35%,transparent)}
.pl-row[aria-current=true]{border-left-color:var(--accent);background:color-mix(in srgb,var(--rule) 45%,transparent)}
.pl-num,.pl-roles,.pl-year,.pl-state{font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.pl-thumb{display:block;width:3.5rem;height:3.5rem;aspect-ratio:1;object-fit:cover;background:var(--rule)}
.pl-main{display:flex;flex-direction:column;min-width:0}
.pl-title{font-size:1.05rem;line-height:1.25;overflow-wrap:anywhere}
.pl-artist{color:var(--muted);font-size:.9rem;overflow-wrap:anywhere}
.pl-state{text-align:right}
.pl-row.is-playing .pl-state{color:var(--accent)}
.pl-row.is-playing .pl-state:before{content:'';display:inline-block;width:.45rem;height:.45rem;background:var(--accent);margin-right:.4rem;vertical-align:.05em}
.pl-row,.ctl,.np-art img{transition:background-color .15s,border-color .15s,color .15s,opacity .2s}
@media(max-width:900px){.np-art{grid-column:1/7}.np-info{grid-column:7/-1}.pl-row{grid-template-columns:2rem 3rem minmax(0,1fr) 3rem 5rem}.pl-roles{display:none}}
@media(max-width:700px){.music-hero-copy{padding:1.5rem 0 1.75rem}.now-playing{grid-template-columns:minmax(0,1fr);gap:1.25rem}.np-art,.np-info{grid-column:1/-1}.np-info{border-top:0;padding-top:0}.np-title{font-size:clamp(2.2rem,11vw,3.4rem);margin:.8rem 0 .6rem}.np-credits{grid-template-columns:1fr;gap:.4rem;margin-top:1.25rem}.np-controls{justify-content:center;margin-top:1.5rem}.playlist-head{display:block}.catalog-count{margin-top:1rem}.pl-row{grid-template-columns:1.75rem 3rem minmax(0,1fr) auto;gap:.75rem;padding:.65rem .25rem}.pl-year{display:none}}
@media(prefers-reduced-motion:reduce){.pl-row,.ctl,.np-art img{transition:none}}

/* Header tools: the print button only lives in the CV header */
.print-button{white-space:nowrap}
/* Large player volume on /music/ */
.np-volume{display:flex;align-items:center;gap:1rem;margin-top:1rem;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.np-volume input{flex:1;max-width:12rem;min-height:44px;margin:0;accent-color:var(--accent);cursor:pointer}
.np-volume input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

/* Global mini player: one fixed bar at the bottom of every page */
html.js body{padding-bottom:4.5rem}
.mini-player{position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--bg);color:var(--text);border-top:1px solid var(--text)}
.mini-player[hidden]{display:none}
.mp-progress{position:absolute;left:0;right:0;top:-1px;height:2px;pointer-events:none}
.mp-progress span{display:block;height:100%;width:0;background:var(--accent)}
.mp-inner{display:flex;align-items:center;gap:1rem;min-height:64px}
.mp-art{flex:none;width:48px;height:48px;object-fit:cover;background:var(--rule)}
.mp-text{flex:1;min-width:0;margin:0;display:flex;flex-direction:column;line-height:1.3}
.mp-title,.mp-artist{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-title{font-size:.95rem}
.mp-artist{font:.68rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.mp-controls{display:flex;align-items:center;gap:.35rem}
.mp-btn{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid transparent;background:transparent;color:var(--text)}
.mp-btn svg{width:1rem;height:1rem;fill:currentColor}
.mp-btn:hover{color:var(--accent)}
.mp-play{border-color:var(--text)}
.mp-play .icon-pause,.mp-play[data-state=playing] .icon-play,.mp-mute .icon-muted,.mp-mute[aria-pressed=true] .icon-sound{display:none}
.mp-play[data-state=playing] .icon-pause,.mp-mute[aria-pressed=true] .icon-muted{display:block}
.mp-volume{display:flex;align-items:center}
.mp-volume input{width:6.5rem;min-height:44px;margin:0 .5rem 0 0;accent-color:var(--accent);cursor:pointer}
.mini-player[data-volume=fixed] .mp-volume,.np-volume[hidden]{display:none}
.mp-link{display:inline-flex;align-items:center;min-height:44px;padding:0 .4rem;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;border-bottom:1px solid transparent}
.mp-link:hover{color:var(--accent)}
.mp-btn:focus-visible,.mp-volume input:focus-visible,.mp-link:focus-visible,.menu-toggle:focus-visible,.tools button:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
@media(max-width:700px){.mp-inner{gap:.6rem;min-height:60px}.mp-art{width:40px;height:40px}.mp-controls{gap:0}.mp-volume{display:none}.mp-link{padding:0 .25rem}}
@media print{.mini-player{display:none}html.js body{padding-bottom:0}}

/* About page: a quiet editorial rhythm around the approved first-person narrative. */
.about-hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(220px,5fr);gap:clamp(2rem,7vw,8rem);align-items:end;padding:clamp(5rem,12vw,11rem) 0 clamp(4rem,9vw,8rem)}
.about-hero h1{font:normal clamp(4.5rem,12vw,11rem)/.82 var(--display);letter-spacing:-.05em;margin:.4rem 0 1.5rem}.about-lede{font:var(--display) clamp(1.8rem,3.4vw,3.4rem)/1.05;max-width:14ch}.about-portrait{margin:0;justify-self:end;max-width:420px}.about-portrait img{display:block;width:100%;height:auto;filter:grayscale(100%)}
.about-story{padding-bottom:clamp(5rem,12vw,11rem)}.about-story>.kicker{border-top:1px solid var(--rule);padding-top:1rem}.about-chapter{max-width:68ch;margin:clamp(5rem,11vw,10rem) auto 0}.about-chapter h2{font:normal clamp(2.6rem,6vw,5.6rem)/.92 var(--display);margin:1rem 0 2.5rem;letter-spacing:-.035em}.about-chapter p{font-size:clamp(1rem,.35vw + .94rem,1.1875rem);line-height:1.62}.about-split{max-width:none;display:grid;grid-template-columns:minmax(180px,3fr) minmax(0,7fr);gap:clamp(2rem,8vw,9rem)}.about-split>div:last-child{max-width:68ch}.about-final{font:normal clamp(2rem,4vw,4rem)/1.02 var(--display)!important;color:var(--accent);margin-top:3rem}.about-closing{border-top:2px solid var(--text);padding-top:2rem}
@media(max-width:700px){.about-hero{grid-template-columns:1fr;gap:2.5rem;padding-top:4rem}.about-portrait{justify-self:start;max-width:75%;margin-left:12%}.about-split{grid-template-columns:1fr;gap:1rem}.about-chapter{margin-top:5rem}.about-chapter h2{font-size:clamp(2.5rem,13vw,4.5rem)}}
@media(prefers-reduced-motion:reduce){.about-page *{scroll-behavior:auto}}

/* External links: certified entities and streaming platforms open in a new tab */
.entity-link{text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}
.entity-link:hover,.platform-link:hover{color:var(--accent);text-decoration-color:var(--accent)}
.np-links ul{gap:.35rem 1.5rem}
.platform-link{display:inline-flex;align-items:center;gap:.35em;min-height:44px;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em}
.playlist{display:grid;grid-template-columns:minmax(0,1fr) auto}
.playlist li{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-columns:subgrid;align-items:center}
.pl-links{display:flex;gap:1rem;list-style:none;margin:0;padding:0 .5rem 0 1rem}
.pl-links .platform-link{color:var(--muted);white-space:nowrap}
.np-links[hidden]{display:none}
@media(max-width:700px){.playlist{display:block}.playlist li{grid-template-columns:1fr}.pl-links{padding:0 .25rem .35rem 5.5rem;margin-top:-.6rem}}

/* Catalogue exploration: mood and genre chips (human-reviewed data), then search, artist, credit and sort. */
.catalog-explore{margin:2.5rem 0 2rem}
.explore-group{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:1.5rem;align-items:start;padding:.85rem 0;border-top:1px solid var(--rule)}
.explore-group[hidden]{display:none}
.explore-label{margin:0;padding-top:.7rem;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{display:inline-flex;align-items:center;gap:.55rem;min-height:40px;padding:0 .85rem;border:1px solid var(--muted);background:transparent;color:var(--text);font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.chip-count{font-size:.65rem;color:var(--muted)}
.chip:hover{border-color:var(--accent);color:var(--accent)}
.chip[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--bg)}
.chip[aria-pressed=true] .chip-count{color:inherit}
.chip:disabled{opacity:.4;cursor:default;border-style:dashed}
.chip:disabled:hover{border-color:var(--muted);color:var(--text)}
.chip:focus-visible,.clear-filters:focus-visible,.music-toolbar select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.explore-note{margin:0;padding:0 0 .25rem 8.5rem;font-size:.85rem;color:var(--muted)}
.explore-note[hidden]{display:none}
.catalog-explore .music-toolbar{grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr)) auto;align-items:end;gap:1.25rem;margin:1rem 0 0;padding-top:1.25rem;border-top:1px solid var(--rule)}
.field{display:flex;flex-direction:column;min-width:0}
.field label{font:.65rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.music-toolbar input,.music-toolbar select{width:100%;padding:.6rem 0}
.music-toolbar select{cursor:pointer;appearance:none;-webkit-appearance:none;padding-right:1.5rem;background-image:linear-gradient(45deg,transparent 50%,var(--text) 50%),linear-gradient(135deg,var(--text) 50%,transparent 50%);background-position:right 9px center,right 4px center;background-size:5px 5px;background-repeat:no-repeat}
.music-toolbar select option{background:var(--bg);color:var(--text)}
.clear-filters{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0;border:0;border-bottom:1px solid currentColor;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.clear-filters:hover{color:var(--accent)}
.clear-filters:disabled{opacity:.4;cursor:default;color:var(--text)}.clear-filters[hidden]{display:none}
.empty-state p{margin:0 0 1.25rem;font-size:1.1rem}
.np-style[hidden]{display:none}
@media(max-width:900px){.catalog-explore .music-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}.field-search{grid-column:1/-1}.clear-filters{grid-column:1/-1;justify-self:start}}
@media(max-width:700px){
  .catalog-explore{margin:1.5rem 0 1.5rem}
  .explore-group{grid-template-columns:1fr;gap:.35rem;padding:.65rem 0}
  .explore-label{padding-top:0}
  .chips{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px;padding:.15rem 16px .35rem;scroll-padding:0 16px;scrollbar-width:none}
  .chips::-webkit-scrollbar{display:none}
  .explore-note{padding:0 0 .25rem;font-size:.8rem}
  .catalog-explore .music-toolbar{grid-template-columns:1fr 1fr;gap:.75rem 1rem}
  .field-search{grid-column:1/-1}
  .clear-filters{grid-column:auto;justify-self:end;align-self:end}
}

/* Shareable links: Share copies a link to the current view or to one recording, a shared recording is highlighted in the
   list and, without a clipboard, the link is shown selected in a field to copy by hand. */
.toolbar-actions{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;align-items:end}
.share-view[data-state=copied],.pl-share[data-state=copied]{color:var(--accent)}
.pl-share{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:transparent;color:var(--muted);font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;cursor:pointer}
.pl-share:hover{color:var(--accent)}
.pl-share:focus-visible,.share-view:focus-visible,.share-fallback input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.playlist li.is-linked{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.playlist li.is-linked .pl-row{border-left-color:var(--accent)}
.link-notice{margin:0 0 1rem;padding:.75rem 1rem;border-left:2px solid var(--accent);background:color-mix(in srgb,var(--rule) 35%,transparent);font-size:.9rem}
.link-notice[hidden],.share-fallback[hidden]{display:none}
/* Playing a link: when the browser refuses sound without a gesture, Play waits on the cover (one recording) or beside
   the results (a selection). */
.np-start{position:absolute;left:50%;bottom:1.25rem;transform:translateX(-50%);display:inline-flex;align-items:center;gap:.6rem;min-height:48px;padding:0 1.4rem;border:1px solid var(--text);background:var(--text);color:var(--bg);font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.np-start:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.np-start svg,.play-selection svg{width:.8rem;height:.8rem;fill:currentColor}
.np-start[hidden]{display:none}
.playlist-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.25rem 1.5rem}
.play-selection{color:var(--accent)}
@media(max-width:700px){.playlist-meta{justify-content:space-between;margin-top:1rem}.playlist-meta .catalog-count{margin-top:0}}
.share-fallback{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin:1rem 0 0;padding:.75rem 0;border-top:1px solid var(--rule)}
.playlist .share-fallback{grid-column:1/-1;margin:0;padding:.5rem .5rem .75rem}
.share-fallback label{font:.65rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.share-fallback input{flex:1 1 16rem;min-width:0;background:transparent;border:0;border-bottom:1px solid var(--text);border-radius:0;padding:.6rem 0;color:var(--text);font:.85rem var(--mono)}
@media(max-width:900px){.toolbar-actions{grid-column:1/-1;justify-self:start}}
/* Phones: the artist list (long credited names) takes a whole row, credit and sort share one, and Reset all and Share
   get a row of their own, one at each end, so neither label wraps and both keep a 44px target. On the narrowest
   screens a row's links (platforms and Share) continue on a second line instead of being cut off. */
@media(max-width:700px){.pl-links{flex-wrap:wrap;column-gap:1rem;row-gap:0}.field-artist{grid-column:1/-1}.toolbar-actions{grid-column:1/-1;justify-self:stretch;justify-content:space-between;flex-wrap:nowrap}}

/* Music hero and platform profiles: the studio photograph leads, uncropped (5:2) at every width. */
.music-hero{padding-top:clamp(1.5rem,3vw,2.5rem)}
.music-stage{position:relative;margin:0 auto;width:min(1320px,calc(100% - 96px))}
.music-cover{margin:0}
.music-cover img{display:block;width:100%;height:auto;aspect-ratio:5/2;background:#1b140e}
.music-profiles{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.profiles-inner{padding:1.25rem 0}
.profile-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.profile-link{display:inline-flex;align-items:center;gap:.55rem;min-height:44px;padding:0 1rem;border:1px solid var(--rule);border-radius:999px;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;color:var(--text);transition:border-color .2s,color .2s}
.profile-link svg{width:1.1rem;height:1.1rem;fill:currentColor;flex:none}
.profile-link:hover,.profile-link:focus-visible{border-color:var(--accent);color:var(--accent)}
.profile-arrow{color:var(--muted)}
/* Wide screens: the title sits on the photograph's dark lower edge, over a gradient that keeps it legible. */
@media(min-width:901px){.music-stage .music-hero-copy{position:absolute;inset:auto 0 0;padding:clamp(2rem,4vw,3.5rem);color:#f2efe8;background:linear-gradient(to top,rgba(12,8,5,.82),rgba(12,8,5,.4) 55%,rgba(12,8,5,0))}.music-stage h1{font-size:clamp(3.5rem,7vw,7.5rem)}.music-stage .music-tagline{color:#e6e2da}}
@media(max-width:700px){.music-stage{width:100%}.music-stage .music-hero-copy{width:calc(100% - 32px);margin:0 auto}.profile-links{display:grid;grid-template-columns:1fr 1fr}.profile-links li{display:flex}.profile-link{flex:1;padding:0 .8rem}}
@media(prefers-reduced-motion:reduce){.profile-link{transition:none}}

/* Navigation and discovery: one header, footer and continuation pattern on every page.
   Arrows: ↓ jumps within the page, → opens another page of the site, ↗ leaves the site; mail and print use their own icons. */
.nav-cta{display:inline-flex;align-items:center;min-height:40px;padding:0 1rem;border:1px solid var(--text);font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;white-space:nowrap}
.nav-cta:hover,.nav-cta[aria-current]{background:var(--text);color:var(--bg)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin:2rem 0 0}
.button{display:inline-flex;align-items:center;gap:.6rem;min-height:48px;padding:0 1.3rem;border:1px solid var(--text);background:var(--text);color:var(--bg);font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none}
.button:hover{background:var(--accent);border-color:var(--accent);color:#000}
.button-quiet{background:transparent;color:var(--text)}
.button-quiet:hover{background:transparent;border-color:var(--accent);color:var(--accent)}
.hero-actions a[href*="/agenda/"]{background:var(--accent);border-color:var(--accent);color:#000}
.hero-actions a[href*="/agenda/"]:hover{background:var(--text);border-color:var(--text);color:var(--bg)}
.background{border-top:1px solid var(--rule)}
.background-head{padding:clamp(6rem,11vw,11rem) 0 clamp(3rem,5vw,4rem)}
.background-head h2{max-width:14ch}
/* Background index: stays under the header while any part of Background is on screen (sticky inside its section). */
.section-index{position:sticky;top:var(--header-offset,58px);z-index:20;background:var(--bg);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.section-index ul{display:flex;align-items:center;gap:0 .95rem;list-style:none;margin:0 -.4rem;padding:0;overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.section-index li:last-child{margin-left:auto}
.section-index a{display:inline-flex;align-items:center;gap:.4rem;min-height:46px;padding:0 .4rem;font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;border-bottom:2px solid transparent}
.section-index a[aria-current]{border-bottom-color:var(--accent)}
/* The strip scrolls sideways and clips anything outside it, so the focus ring is drawn inside the link. */
.section-index a:focus-visible{outline-offset:-3px}
.background [id]{scroll-margin-top:calc(var(--header-offset,4rem) + 4rem)}
.text-link.to-page{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;border-bottom:1px solid currentColor}
.section-index a:hover,.text-link.to-page:hover{color:var(--accent)}
.background .foundations{background:var(--sand)}
.section-index .to-page{color:var(--accent)}
.background .section{border-top:0}
.background .experience-section,.background .foundations{border-top:1px solid var(--rule)}
.cv-cta{margin:2.5rem 0 0}
.cv-cta .text-link{margin-top:0}
.foundations .cv-cta{margin-top:3.5rem}
.feature-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.5rem,3vw,3rem);list-style:none;margin:0;padding:0}
.feature-art{position:relative;margin:0 0 1.1rem}
.feature-art img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;background:var(--rule)}
.feature-play{position:absolute;right:.75rem;bottom:.75rem;display:inline-grid;place-items:center;width:3.5rem;height:3.5rem;padding:0;border:0;background:var(--ink);color:var(--paper)}
.feature-play[hidden]{display:none}
.feature-play svg{width:1.1rem;height:1.1rem;fill:currentColor}
.feature-play .icon-pause,.feature-play[data-state=playing] .icon-play{display:none}
.feature-play[data-state=playing] .icon-pause{display:block}
.feature-play:hover,.feature.is-playing .feature-play{background:var(--accent);color:#000}
.feature-play:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.feature-title{font-size:clamp(1.7rem,2.6vw,2.6rem);line-height:1}
.feature-artist{margin:.5rem 0 0}
.feature-credit{margin:.3rem 0 0;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.feature.is-playing .feature-credit{color:var(--accent)}
.about-teaser-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,7vw,8rem);align-items:start}
.about-teaser h2{font-size:clamp(2.4rem,4.2vw,4.2rem);max-width:16ch;margin-top:1rem}
.about-synopsis{font-size:clamp(1.15rem,.6vw + 1rem,1.45rem);line-height:1.5;max-width:42ch;margin:1.6rem 0 2.5rem}
.chapter-index ol{list-style:none;margin:.75rem 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:2rem}
.chapter-index a{display:flex;align-items:baseline;gap:.8rem;min-height:44px;height:100%;padding:.65rem 0;border-top:1px solid var(--rule);text-decoration:none;line-height:1.3}
.chapter-index a:hover{color:var(--accent)}
.chapter-num{font:.68rem var(--mono);color:var(--accent);flex:none}
/* Secondary colour: a deep olive band for the music, the only full-colour surface besides the terracotta of What I do.
   Terracotta on olive is below 3:1, so focus, hover and the playing state use paper and mist there. */
.featured-section{background:var(--olive);color:var(--paper);border-top:0}
.featured-section .kicker,.featured-section .feature-credit{color:var(--mist)}
.featured-section .feature.is-playing .feature-credit{color:var(--paper)}
.featured-section .feature-play{background:var(--paper);color:var(--ink)}
.featured-section .feature-play:hover{background:var(--mist);color:var(--ink)}
.featured-section .feature.is-playing .feature-play{background:var(--paper);color:var(--ink)}
.featured-section a:focus-visible,.featured-section .feature-play:focus-visible{outline-color:var(--paper)}
.featured-section .text-link.to-page:hover{color:var(--mist)}
@media(max-width:700px){.featured-section .feature-list{border-top-color:rgba(242,239,232,.25)}.featured-section .feature{border-bottom-color:rgba(242,239,232,.25)}.chapter-index ol{grid-template-columns:1fr}}
.contact-links b svg{width:1.15rem;height:1.15rem;fill:currentColor;vertical-align:-.2em}
.continue{padding:clamp(4rem,8vw,6rem) 0;border-top:1px solid var(--rule)}
.continue-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:2rem;list-style:none;margin:1.25rem 0 0;padding:0}
.continue-links a{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:4.5rem;padding:1rem 0;border-top:2px solid var(--text);font:clamp(1.4rem,2.2vw,2rem)/1.05 var(--serif);text-decoration:none}
.continue-links b{font:400 1rem var(--mono)}
.continue-links a:hover{color:var(--accent);border-color:var(--accent)}
.cv-page .continue{margin-top:2rem}
.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 2rem}
.footer p{margin:0}
.footer ul{display:flex;flex-wrap:wrap;gap:0 1.4rem;list-style:none;margin:0;padding:0}
.footer a{display:inline-flex;align-items:center;min-height:44px;text-transform:uppercase;letter-spacing:.06em;text-decoration:none}
.footer a:hover{color:var(--accent)}
.footer a[aria-current]{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px}
.social-links{flex-basis:100%;border-top:1px solid var(--rule);padding-top:.35rem}
.social-links ul{gap:0 .9rem}
.social-links a{min-height:2rem;font-size:.62rem}
.print-button{display:inline-flex;align-items:center;gap:.55rem;min-height:44px;margin-top:1.25rem;padding:0 1rem;border:1px solid var(--text);font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em}
.print-button svg{width:1rem;height:1rem;fill:currentColor;fill-rule:evenodd}
.print-button:hover{border-color:var(--accent);color:var(--accent)}
@media(min-width:901px){.featured-section .feature-list,.featured-section .cv-cta{margin-left:calc((100% - 3rem)/3 + 3rem)}}
@media(max-width:900px){.feature-list{gap:1.25rem}}
@media(max-width:700px){
  html.js.menu-open .nav-cta{justify-content:center;min-height:48px}
  .hero-actions{margin-top:1.5rem}.button{flex:1 1 auto;justify-content:center}
  .background-head{grid-template-columns:1fr;gap:2rem;padding:5rem 0 2.5rem}
  .section-index ul{gap:0 .3rem}.section-index a{font-size:.68rem}.section-index li:last-child{display:none}
  .feature-list{grid-template-columns:1fr;gap:0;border-top:1px solid var(--rule)}
  .feature{display:grid;grid-template-columns:6.5rem minmax(0,1fr);grid-template-rows:auto auto 1fr;column-gap:1rem;padding:1rem 0;border-bottom:1px solid var(--rule)}
  .feature-art{grid-row:1/4;margin:0}.feature-title{align-self:end;font-size:1.6rem}
  .feature-play{right:.35rem;bottom:.35rem;width:44px;height:44px}
  .about-teaser-grid{grid-template-columns:1fr;gap:2rem}
  .continue-links{grid-template-columns:1fr}
  .footer-inner{flex-direction:column;align-items:flex-start}
}
@media print{.continue,.print-button{display:none}}

/* Landing v4: shorter rhythm and the palette as an editorial system.
   Cream for introductions, sand for reading surfaces (Research, Education), terracotta for What I do and data,
   olive for the personal and creative world (Music, About), ink for emphasis (featured study) and the closing. */
#content>.section,.background .section{padding:clamp(4rem,7vw,7rem) 0}
/* Full-bleed colour bands land flush under the header: a 16px margin would show a sliver of the band above. */
#content>#music,#content>#writing,#content>#contact{scroll-margin-top:var(--header-offset,4rem)}
.background-head{padding:clamp(4rem,7vw,7rem) 0 clamp(2rem,3.5vw,3rem)}
#content .section-head h2,#content .section-head h3,#content .facet-layout h3,#content .foundations h3,#content .background-head h2,#content .contact h2{font-size:clamp(2.6rem,4.6vw,4.75rem);max-width:14ch}
#content .section-head{margin-bottom:clamp(2rem,4vw,3rem)}
.hero-bottom{margin-top:3rem}
/* Research: one featured study (ink card) beside four compact cards with the figure and the link. */
.writing-section{background:var(--sand);border-top:0}
.writing-section .section-head{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:end}
#content .background-head h2{max-width:20ch}
#content .writing-section .section-head h2{max-width:24ch;font-size:clamp(2.3rem,3.9vw,3.9rem)}
.writing-section .section-intro{margin:0;color:var(--muted)}
.writing-list{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,3.5vw,3.5rem);align-items:stretch}
.writing-list .writing-feature{display:flex;flex-direction:column;justify-content:space-between;gap:2rem;padding:clamp(1.75rem,3vw,3rem);border:0;background:var(--ink);color:var(--paper)}
.writing-list .writing-feature h3{font-size:clamp(1.8rem,2.6vw,2.6rem);max-width:none;margin:.7rem 0 1rem}
.writing-list .writing-feature p:not(.article-index),.writing-feature .article-index,.writing-feature .feature-data span,.writing-feature .feature-data small{color:var(--mist)}
.writing-feature .feature-data{flex-direction:row;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;column-gap:1.5rem}
.writing-feature .feature-data strong{font-size:clamp(3.5rem,6vw,6rem)}
.writing-feature .feature-data span{margin:0 0 .5rem}
.writing-feature .feature-data svg{flex:1 1 14rem;max-height:7rem}
.writing-feature .feature-data circle{fill:var(--ink)}
.writing-feature .feature-data small{flex-basis:100%;margin-top:.75rem}
.writing-feature .text-link:focus-visible{outline-color:var(--paper)}
.writing-cards{display:flex;flex-direction:column;border-top:2px solid var(--text)}
/* position:relative keeps the absolutely positioned .sr-only text inside the sideways strip on mobile. */
.writing-card{position:relative;flex:1;display:flex;flex-direction:column;padding:.95rem 0 .9rem;border-bottom:1px solid var(--graphite)}
.writing-card h3{font-size:clamp(1.35rem,1.9vw,1.8rem);line-height:1.02;margin:.45rem 0 .4rem}
.writing-card>p:not(.article-index):not(.card-foot){margin:0;color:var(--muted);font-size:.92rem;line-height:1.45;max-width:46ch}
.card-foot{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin:auto 0 0;padding-top:.7rem}
.card-metric{font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.card-metric strong{font:400 1.5rem var(--serif);letter-spacing:0;text-transform:none;color:var(--accent);margin-right:.4rem}
.card-foot a{display:inline-flex;align-items:center;min-height:44px;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
:root[data-theme=dark] .writing-list .writing-feature{border:1px solid var(--rule)}
/* Olive as text ties About to Music: kicker and chapter numbers (8.6:1 on cream). Dark theme keeps the accent. */
.about-teaser .kicker,.about-teaser .chapter-num{color:var(--olive)}
:root[data-theme=dark] .about-teaser .kicker{color:var(--muted)}
:root[data-theme=dark] .about-teaser .chapter-num{color:var(--accent)}
@media(max-width:1000px) and (min-width:701px){.writing-list{grid-template-columns:minmax(0,1fr)}.writing-cards{display:grid;grid-template-columns:1fr 1fr;column-gap:2rem}}
@media(max-width:700px){
  #content>.section,.background .section{padding:3.5rem 0}
  .background-head{padding:3.5rem 0 2rem}
  #content .section-head h2,#content .section-head h3,#content .facet-layout h3,#content .foundations h3,#content .background-head h2,#content .contact h2{font-size:clamp(2.3rem,11vw,3.2rem)}
  .hero-bottom{margin-top:2rem}
  .writing-section .section-head{grid-template-columns:1fr}
  .writing-list{grid-template-columns:minmax(0,1fr);gap:1.5rem}
  .writing-list .writing-feature{padding:1.5rem 1.25rem;gap:1.25rem}
  .writing-list .writing-feature h3{font-size:1.85rem}
  .writing-feature .feature-data strong{font-size:3.5rem}
  .writing-feature .feature-data svg{max-height:4.5rem}
  /* The four cards become a sideways strip (native scroll, snap); the next card peeks in. */
  .writing-cards{display:grid;grid-auto-flow:column;grid-auto-columns:84%;gap:.75rem;overflow-x:auto;scroll-snap-type:x mandatory;border-top:0;margin:0 -16px;padding:0 16px .75rem;scroll-padding:0 16px}
  .writing-card{scroll-snap-align:start;background:var(--paper);padding:1.1rem 1.1rem .5rem;border:0}
  :root[data-theme=dark] .writing-card{background:var(--ink);border:1px solid var(--rule)}
}
@media print{.writing-section{background:#fff}.writing-list .writing-feature{background:#eee;color:#111}}
/* Booking page (/agenda/): numbered steps, a running summary, and the panels for email confirmation and for the guest's own changes.
   Its composition (studio stage, portrait, Olive band, Sand sheet) follows below the shared rules. */
.agenda-progress{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--rule)}
.agenda-progress li{display:flex;gap:.7rem;align-items:baseline;margin-top:-1px;padding:.9rem 1rem 0 0;border-top:2px solid transparent;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.agenda-progress[hidden]{display:none}.agenda-progress b{font-weight:400}.agenda-progress li[aria-current]{border-top-color:var(--text);color:var(--text)}.agenda-progress li[aria-current] b{color:var(--accent)}
.agenda-page{padding-bottom:clamp(3rem,7vw,6rem)}.agenda-app{padding-top:clamp(1rem,3vw,2rem)}
.agenda-status{margin:0;font:clamp(1.4rem,2.6vw,2rem)/1.2 var(--serif);max-width:32ch}.agenda-status:not(:empty){padding:1.6rem 0;border-top:2px solid var(--text)}
.agenda-flow{display:grid;grid-template-columns:minmax(0,1fr) minmax(15rem,21rem);column-gap:clamp(2rem,6vw,6rem);align-items:start}.agenda-flow>.agenda-step{grid-column:1}
.agenda-step{border:0;border-top:1px solid var(--rule);margin:0;padding:1.4rem 0 2.6rem;min-width:0}
.agenda-step legend{float:left;width:100%;padding:0;margin:0 0 1.4rem;display:flex;align-items:baseline;gap:1rem;font:clamp(1.7rem,3vw,2.6rem)/1.05 var(--serif)}.agenda-step legend+*{clear:both}
.agenda-step legend b,.agenda-panel .kicker b{flex:none;min-width:1.6rem;font:400 .72rem var(--mono);letter-spacing:.06em;color:var(--accent)}
.agenda-step legend:focus,.agenda-panel h2:focus,.agenda-move h3:focus,#agenda-cancel-question:focus{outline:none}
.agenda-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.agenda-option{display:grid;grid-template-columns:auto 1fr;column-gap:.8rem;row-gap:.35rem;align-items:baseline;padding:1.1rem 1.2rem 1.2rem;border:1px solid var(--rule);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.agenda-option input{width:1.05rem;height:1.05rem;margin:0;accent-color:var(--accent);transform:translateY(.1rem)}.agenda-option-name{font:clamp(1.5rem,2.4vw,2rem)/1 var(--serif)}
.agenda-option-note{grid-column:2;font:.72rem/1.45 var(--mono);color:var(--muted)}
.agenda-option:hover{border-color:var(--text)}.agenda-option:has(input:checked){border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}.agenda-option:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:3px}
.agenda-durations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem}
.agenda-duration,.agenda-day,.agenda-time{border:1px solid var(--rule);background:transparent;color:var(--text);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.agenda-duration:hover,.agenda-day:hover,.agenda-time:hover{border-color:var(--text)}
.agenda-duration[aria-pressed=true],.agenda-day[aria-pressed=true],.agenda-time[aria-pressed=true]{background:var(--text);color:var(--bg);border-color:var(--text)}.agenda-app [aria-pressed=true] span{color:inherit}
.agenda-duration{display:flex;align-items:baseline;justify-content:center;gap:.35rem;min-height:5.2rem;padding:.8rem}.agenda-duration-num{font:clamp(2rem,4vw,3rem)/1 var(--serif)}
.agenda-duration-unit,.agenda-day-week,.agenda-day-month{font:.66rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.agenda-tz{margin:0 0 1rem;font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.agenda-zone{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.2rem;margin:0 0 1rem}.agenda-zone .agenda-tz{margin:0}.agenda-zone-pick{display:inline-flex;flex-wrap:wrap;max-width:100%;align-items:center;gap:.6rem;font:.68rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.agenda-zone-select{min-height:44px;min-width:0;max-width:min(24rem,100%);padding:0 .6rem;border:1px solid var(--rule);border-radius:0;background:var(--bg);color:var(--text);font:.85rem var(--sans);text-transform:none;letter-spacing:0}.agenda-zone-select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.agenda-slot-state{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem}.agenda-slot-state p{margin:0;color:var(--muted)}.agenda-slot-state p:not(:empty){margin-bottom:1rem}.agenda-slot-state .agenda-quiet{margin-bottom:1rem}
.agenda-strip{display:flex;align-items:stretch;gap:.5rem;margin-bottom:1.2rem}.agenda-days{display:flex;flex:1;gap:.6rem;min-width:0;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;padding:6px;scroll-padding-inline:6px}.agenda-days::-webkit-scrollbar{display:none}.agenda-strip-prev,.agenda-strip-next{flex:none;width:2.75rem;border:1px solid var(--rule);background:transparent;color:var(--text);font:1rem var(--mono);cursor:pointer}.agenda-strip-prev:hover:not(:disabled),.agenda-strip-next:hover:not(:disabled){border-color:var(--text)}.agenda-strip-prev:disabled,.agenda-strip-next:disabled{opacity:.3;cursor:default}.agenda-strip:not(.is-scrollable) .agenda-strip-prev,.agenda-strip:not(.is-scrollable) .agenda-strip-next{display:none}.agenda-day{display:grid;flex:none;justify-items:center;gap:.15rem;width:4.8rem;padding:.7rem .3rem .8rem;scroll-snap-align:start}.agenda-day-num{font:2rem/1 var(--serif)}
.agenda-times{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.6rem}
.agenda-time{display:flex;justify-content:center;align-items:center;gap:.1rem;min-height:3rem;padding:0 .6rem;font:.95rem var(--mono)}.agenda-time-end{font-size:.75rem;color:var(--muted)}
.agenda-skeleton{display:block;background:var(--rule);opacity:.35;cursor:default}.agenda-skeleton.agenda-day{height:5.15rem}.agenda-skeleton.agenda-time{height:3rem}
.agenda-summary{grid-column:2;grid-row:1/span 4;position:sticky;top:calc(var(--header-offset,4rem) + 1.5rem);padding-top:1rem;border-top:2px solid var(--text)}.agenda-summary .kicker{margin:0 0 .4rem}
.agenda-ticket{margin:0;border-top:1px solid var(--rule)}.agenda-summary .agenda-ticket{border-top:0}
.agenda-ticket>div{display:grid;grid-template-columns:minmax(6.5rem,9rem) 1fr;gap:1rem;align-items:baseline;padding:.75rem 0;border-bottom:1px solid var(--rule)}.agenda-summary .agenda-ticket>div{grid-template-columns:1fr;gap:.15rem}
.agenda-ticket dt{font:.68rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.agenda-ticket dd{margin:0;font:1.2rem/1.25 var(--serif)}
.agenda-ticket dd.is-empty{font:.78rem var(--mono);color:var(--muted)}.agenda-ticket-key dd{font-size:clamp(2.2rem,4vw,3.2rem);line-height:1}
.agenda-small{max-width:58ch;margin:.8rem 0 0;font-size:.9rem;color:var(--muted)}.agenda-small:empty{margin:0}
.agenda-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem 1.6rem}.agenda-field{display:grid;gap:.35rem;min-width:0}.agenda-field-wide{grid-column:1/-1}
.agenda-field label{font:.68rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.agenda-field input,.agenda-field textarea{width:100%;min-height:48px;padding:.7rem 0;border:0;border-bottom:1px solid var(--text);border-radius:0;background:transparent;color:var(--text);font:1.05rem var(--sans)}
.agenda-field textarea{min-height:5.5rem;resize:vertical}.agenda-field input::placeholder{color:var(--muted)}
.agenda-field input:focus-visible,.agenda-field textarea:focus-visible,.agenda-duration:focus-visible,.agenda-day:focus-visible,.agenda-time:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.agenda-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.agenda-error{margin:1rem 0 0;font-size:.95rem}.agenda-error:not(:empty){padding-left:.8rem;border-left:3px solid var(--accent)}
.agenda-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.4rem;margin:1.4rem 0 0}.agenda-actions .agenda-small{margin:0}.agenda-actions:not(:has(> :not([hidden]))){margin:0}
.agenda-submit,.agenda-quiet{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 1.5rem;font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;cursor:pointer}
.agenda-submit{border:1px solid var(--text);background:var(--text);color:var(--bg)}.agenda-submit:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#000}.agenda-submit:disabled{opacity:.55;cursor:not-allowed}
.agenda-quiet{border:1px solid var(--text);background:transparent;color:var(--text)}.agenda-quiet:hover{border-color:var(--accent);color:var(--accent)}
.agenda-panel{max-width:48rem;padding-top:1.4rem;border-top:2px solid var(--text)}.agenda-panel .kicker{display:flex;gap:1rem;margin:0}
.agenda-panel h2{font-size:clamp(2.4rem,5.5vw,4.6rem);max-width:16ch;margin:.7rem 0 1rem}.agenda-panel-lede{max-width:44ch;margin:0 0 1.6rem;font-size:1.15rem}.agenda-panel-lede:empty{margin:0}
.agenda-panel.is-cancelled .agenda-ticket dd{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.agenda-confirm{margin-top:1.6rem;padding:1.2rem 1.4rem 1.4rem;border:1px solid var(--text)}.agenda-confirm p{max-width:40ch;margin:0;font:1.3rem/1.3 var(--serif)}
.agenda-move{margin-top:1.8rem;padding-top:1.4rem;border-top:1px solid var(--rule)}.agenda-move h3{margin:0 0 .4rem;font-size:clamp(1.6rem,3vw,2.4rem)}.agenda-move .agenda-tz{margin-top:.8rem}
.agenda-fallback{margin-top:3rem;font:.75rem var(--mono);text-transform:uppercase}.agenda-fallback a{display:inline-flex;align-items:center;min-height:44px}
.agenda-app [hidden]{display:none!important} /* display rules above must never reveal a hidden element (e.g. the Meet link) */
@keyframes agenda-in{from{opacity:0;transform:translateY(8px)}}@keyframes agenda-pulse{to{opacity:.12}}
@media(prefers-reduced-motion:no-preference){.agenda-details:not([hidden]),.agenda-panel.is-entering,.agenda-move:not([hidden]),.agenda-confirm:not([hidden]){animation:agenda-in .28s cubic-bezier(.2,.7,.2,1) both}.agenda-skeleton{animation:agenda-pulse 1.1s ease-in-out infinite alternate}}
@media(max-width:900px){.agenda-flow{grid-template-columns:minmax(0,1fr)}.agenda-summary{grid-column:1;grid-row:auto;position:static;margin:0 0 2.4rem}.agenda-summary:not(.is-ready){display:none}.agenda-summary .agenda-ticket>div{grid-template-columns:minmax(6.5rem,9rem) 1fr;gap:1rem}}
@media(max-width:700px){.agenda-zone-pick{width:100%}.agenda-zone-select{flex:1;min-width:0}.agenda-progress li{flex-direction:column;gap:.2rem;padding-right:.6rem;font-size:.62rem}.agenda-options{grid-template-columns:minmax(0,1fr)}.agenda-durations{gap:.5rem}.agenda-duration{flex-direction:column;align-items:center;gap:.1rem;min-height:4.6rem;padding:.6rem .2rem}.agenda-strip-prev,.agenda-strip-next{display:none}.agenda-strip{margin-inline:-16px}.agenda-days{scroll-padding-inline:16px;padding:6px 16px}.agenda-times{grid-template-columns:repeat(2,minmax(0,1fr))}.agenda-fields{grid-template-columns:minmax(0,1fr)}.agenda-actions>.agenda-submit{width:100%}.agenda-ticket>div,.agenda-summary .agenda-ticket>div{grid-template-columns:minmax(0,1fr);gap:.2rem}}
@media(prefers-reduced-motion:reduce){.agenda-option,.agenda-duration,.agenda-day,.agenda-time{transition:none}}
/* Composition ("studio session", approved preview B revised). Music's stage (the studio photograph with the title over its scrim, same treatment
   as /music/), then Home's Featured-music Olive band holding what the global player is playing, then the booking as a
   session sheet on Sand, the support tone the manual gives to long sections: image → Olive → Sand → Paper.
   On Olive the manual keeps focus and active states in Paper (terracotta is under 3:1 there). In dark mode Sand
   becomes the background and the sheet is set apart by rules, as the manual says; Olive keeps its surface. */
.agenda-page .agenda-stage{position:relative;width:min(1320px,calc(100% - 96px));margin:clamp(1.5rem,3vw,2.5rem) auto 0}
.agenda-page .agenda-cover{margin:0}
.agenda-page .agenda-cover img{display:block;width:100%;height:auto;aspect-ratio:5/2;object-fit:cover;background:#1b140e}
.agenda-page .agenda-stage-copy{position:absolute;inset:auto 0 0;padding:clamp(2rem,4vw,3.5rem);color:#f2efe8;background:linear-gradient(to top,rgba(12,8,5,.84),rgba(12,8,5,.42) 55%,rgba(12,8,5,0))}
.agenda-page .agenda-stage-copy .eyebrow{color:#e6e2da;margin:0}
.agenda-page .agenda-stage h1{font-size:clamp(3.6rem,8vw,8.4rem);line-height:.9;letter-spacing:-.02em;margin:.5rem 0 1rem;max-width:none}
.agenda-page .agenda-meta{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem 1.8rem;font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.14em;color:#e6e2da}

/* Olive band: the progress of the booking and what the site's player is playing (one more view of the engine). */
.agenda-page .agenda-band{background:var(--olive);color:var(--paper);margin-top:clamp(2rem,4vw,3rem)}
.agenda-page .agenda-band-inner{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(1.5rem,4vw,4rem);align-items:center;padding:1.5rem 0 1.6rem}
.agenda-page .agenda-band .agenda-progress{margin:0;border-top-color:rgba(242,239,232,.3)}
.agenda-page .agenda-band .agenda-progress li{color:var(--mist)}
.agenda-page .agenda-band .agenda-progress li[aria-current]{color:var(--paper);border-top-color:var(--paper)}
.agenda-page .agenda-band .agenda-progress li[aria-current] b{color:var(--paper)}
.agenda-page .agenda-now{display:grid;grid-template-columns:56px minmax(0,1fr) 48px;gap:1rem;align-items:center}
.agenda-page .agenda-now img{width:56px;height:56px;object-fit:cover;background:rgba(242,239,232,.15)}
.agenda-page .agenda-now-text{display:flex;flex-direction:column;min-width:0;margin:0;line-height:1.25}
.agenda-page .agenda-now-label,.agenda-page .agenda-now-artist{font:.64rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--mist);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agenda-page .agenda-now-title{font:1.45rem/1.1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agenda-page .agenda-now-play{display:grid;place-items:center;width:48px;height:48px;padding:0;border:0;background:var(--paper);color:var(--ink)}
.agenda-page .agenda-now-play svg{width:1rem;height:1rem;fill:currentColor}
.agenda-page .agenda-now-play .icon-pause,.agenda-page .agenda-now-play[data-state=playing] .icon-play{display:none}.agenda-page .agenda-now-play[data-state=playing] .icon-pause{display:block}
.agenda-page .agenda-now-play:focus-visible{outline:3px solid var(--paper);outline-offset:3px}

/* Sand session sheet: like the large player on /music/, a headline (here: your meeting) over label/value rows. */
.agenda-page .agenda-sheet{background:var(--sand);padding:clamp(2.5rem,5vw,4.5rem) 0 clamp(3.5rem,7vw,6rem)}
:root[data-theme=dark] .agenda-page .agenda-sheet{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.agenda-page .agenda-app{padding-top:0}
.agenda-page .agenda-flow{grid-template-columns:minmax(0,1fr)}
.agenda-page .agenda-summary{grid-column:1;grid-row:1;position:sticky;top:var(--header-offset,58px);z-index:4;margin:0 0 .5rem;padding:1rem 0 1.1rem;background:var(--sand);border-top:2px solid var(--text);border-bottom:1px solid var(--rule)}
.agenda-page .agenda-summary .kicker{margin:0 0 .5rem}
.agenda-page .agenda-summary .agenda-ticket{display:grid;grid-template-columns:1fr .9fr 2.2fr 1.4fr;gap:1.6rem;border:0}
.agenda-page .agenda-summary .agenda-ticket>div{grid-template-columns:1fr;gap:.2rem;padding:0;border:0}
.agenda-page .agenda-summary dd{font-size:1.35rem}
.agenda-page #agenda-sum-date,.agenda-page #agenda-sum-time{font-size:clamp(1.9rem,3.2vw,3rem);line-height:1}
.agenda-page .agenda-summary dd.is-empty{font-size:.78rem;line-height:1.4}
.agenda-page .agenda-summary .agenda-small{margin-top:.6rem}

/* Rows: mono label column (01 / question) and the choices beside it, the label/value rhythm of the music player. */
.agenda-page .agenda-flow>.agenda-step{grid-column:1;display:block;padding:1.8rem 0 2rem;border-top:1px solid var(--rule)}
.agenda-page .agenda-step legend{float:left;width:min(15rem,30%);margin:0;padding-right:1.5rem;display:block;font:.72rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.agenda-page .agenda-step legend b{display:block;margin-bottom:.35rem;font:400 2.4rem/1 var(--serif);letter-spacing:0;color:var(--text)}
.agenda-page .agenda-step:has([aria-pressed=true]) legend b,.agenda-page .agenda-modality legend b{color:var(--accent)}
.agenda-page .agenda-step legend+*{clear:none}
.agenda-page .agenda-step>:not(legend){margin-left:min(15rem,30%)}
.agenda-page .agenda-option{border-color:var(--mist);background:var(--paper)}
:root[data-theme=dark] .agenda-page .agenda-option{background:transparent;border-color:var(--rule)}
.agenda-page .agenda-option:not(:has(input:checked)) .agenda-option-note{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.agenda-page .agenda-duration,.agenda-page .agenda-day,.agenda-page .agenda-time,.agenda-page .agenda-strip-prev,.agenda-page .agenda-strip-next{border-color:var(--mist);background:var(--paper)}
:root[data-theme=dark] .agenda-page .agenda-duration,:root[data-theme=dark] .agenda-page .agenda-day,:root[data-theme=dark] .agenda-page .agenda-time,:root[data-theme=dark] .agenda-page .agenda-strip-prev,:root[data-theme=dark] .agenda-page .agenda-strip-next{background:transparent;border-color:var(--rule)}
/* Durations drawn to scale: each is as wide as its length, so 180 min reads six times 30 min. */
.agenda-page .agenda-durations{display:flex;gap:.6rem;align-items:stretch}
.agenda-page .agenda-duration{min-height:4.6rem;justify-content:flex-start;padding:.8rem 1rem}
.agenda-page .agenda-duration:nth-child(1){flex:1 1 0}.agenda-page .agenda-duration:nth-child(2){flex:2 1 0}.agenda-page .agenda-duration:nth-child(3){flex:4 1 0}.agenda-page .agenda-duration:nth-child(4){flex:6 1 0}
.agenda-page .agenda-duration-num{font-size:clamp(1.9rem,3vw,2.6rem)}
.agenda-page .agenda-duration[aria-pressed=true],.agenda-page .agenda-day[aria-pressed=true],.agenda-page .agenda-time[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#000}
.agenda-page .agenda-duration:hover,.agenda-page .agenda-day:hover,.agenda-page .agenda-time:hover{border-color:var(--text)}
.agenda-page .agenda-zone-select{background:var(--paper)}
:root[data-theme=dark] .agenda-page .agenda-zone-select{background:var(--bg)}
.agenda-page .agenda-field input,.agenda-page .agenda-field textarea{background:transparent}
.agenda-page .agenda-panel{border-top-color:var(--text)}
.agenda-page .agenda-panel h2{font-size:clamp(2.8rem,6vw,5.4rem)}

@media(prefers-reduced-motion:no-preference){.agenda-page .agenda-summary dd.is-changed{animation:agenda-changed .32s cubic-bezier(.2,.7,.2,1)}}
@keyframes agenda-changed{from{opacity:0;transform:translateY(6px)}}
@media(max-width:900px){
  .agenda-page .agenda-band-inner{grid-template-columns:minmax(0,1fr)}
  .agenda-page .agenda-summary .agenda-ticket{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
  .agenda-page .agenda-stage{width:100%;margin-top:0}
  .agenda-page .agenda-cover img{aspect-ratio:4/5;object-position:58% 50%}
  .agenda-page .agenda-stage-copy{padding:2rem 16px}
  .agenda-page .agenda-stage h1{font-size:clamp(3.6rem,19vw,6rem)}
  .agenda-page .agenda-meta{gap:.2rem 1rem;font-size:.66rem;letter-spacing:.1em}
  .agenda-page .agenda-band{margin-top:0}
  .agenda-page .agenda-step legend{float:none;width:auto;padding:0;margin-bottom:1rem}
  .agenda-page .agenda-step legend b{display:inline;margin-right:.6rem;font-size:1.7rem;vertical-align:-.15em}
  .agenda-page .agenda-step>:not(legend){margin-left:0}
  .agenda-page .agenda-summary{top:calc(var(--header-offset,53px) - 1px);padding:.7rem 0 .8rem}
  .agenda-page .agenda-summary .kicker,.agenda-page .agenda-summary .agenda-small{display:none}
  .agenda-page .agenda-summary .agenda-ticket{grid-template-columns:auto auto;gap:.3rem 1.2rem}
  .agenda-page .agenda-summary dt{display:none}
  .agenda-page #agenda-sum-date,.agenda-page #agenda-sum-time{font-size:1.4rem}
  .agenda-page .agenda-summary dd{font-size:1rem}
  .agenda-page .agenda-durations{flex-wrap:wrap}
  .agenda-page .agenda-duration{flex-direction:column;align-items:flex-start;gap:0;min-height:4.4rem;padding:.6rem .7rem}
}
.agenda-page .agenda-time{align-items:center}
.agenda-page .agenda-band .agenda-progress{grid-column:auto}
.agenda-page .agenda-summary{padding:.8rem 0 .9rem}
.agenda-page .agenda-summary .kicker,.agenda-page .agenda-summary .agenda-small{display:none}
.agenda-page #agenda-sum-date,.agenda-page #agenda-sum-time{font-size:clamp(1.6rem,2.4vw,2.2rem)}
.agenda-page .agenda-summary dd{font-size:1.2rem}
@media(max-width:700px){
  .agenda-page .agenda-durations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .agenda-page .agenda-duration{align-items:center}
}
.agenda-page .agenda-summary dd.is-empty{font:.78rem/1.4 var(--mono);color:var(--muted)}
:root[data-theme=dark] .agenda-page .agenda-duration[aria-pressed=true],:root[data-theme=dark] .agenda-page .agenda-day[aria-pressed=true],:root[data-theme=dark] .agenda-page .agenda-time[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#000}
.agenda-page #agenda-sum-date.is-empty,.agenda-page #agenda-sum-time.is-empty{font:.78rem/1.4 var(--mono);color:var(--muted)}
@media(max-width:700px){.agenda-page .agenda-step legend{float:left;width:100%;margin-bottom:1.1rem}.agenda-page .agenda-step legend+*{clear:both}}
.agenda-page .agenda-sheet :is(input,textarea,select,button,legend,h2,h3,[tabindex]){scroll-margin-top:calc(var(--header-offset,58px) + 8.5rem)}
@media(max-width:700px){.agenda-page .agenda-sheet :is(input,textarea,select,button,legend,h2,h3,[tabindex]){scroll-margin-top:calc(var(--header-offset,53px) + 6rem)}}

/* The portrait. Two photographs with two jobs: the studio is Luis's musical world, the documentary
   black-and-white portrait (the one on Home and About, same grayscale treatment) is the person you will meet.
   It is laid on the scene like a print: rectangular, no shadow, no frame, bridging the photograph and the Olive band
   so the two surfaces read as one composition. It never sits beside the form and never covers the title. */
.agenda-page{--agenda-pw:clamp(10.5rem,16vw,15rem);--agenda-pr:clamp(1.5rem,3vw,3rem);--agenda-overlap:clamp(3.5rem,5.5vw,5.5rem)}
.agenda-page .agenda-portrait{position:absolute;z-index:2;right:var(--agenda-pr);bottom:calc(-1 * var(--agenda-overlap) - 1.6rem);width:var(--agenda-pw);margin:0}
.agenda-page .agenda-portrait img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 28%;filter:grayscale(100%);background:#1b140e}
.agenda-page .agenda-portrait figcaption{display:flex;justify-content:space-between;gap:.6rem;height:1.6rem;align-items:flex-end;font:.62rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--mist)}
.agenda-page .agenda-portrait figcaption span:first-child{color:var(--paper)}
.agenda-page .agenda-stage-copy{padding-right:calc(var(--agenda-pw) + var(--agenda-pr) + 2rem)}
.agenda-page .agenda-band-inner{padding-right:calc(var(--agenda-pw) + var(--agenda-pr) + 2rem);min-height:calc(var(--agenda-overlap) + 4.5rem)}
/* Spanish headline: one word, wholly the italic accent ("¡Conectemos!"); sized so it never runs into the portrait. */
html[lang=es] .agenda-page .agenda-stage h1{font-size:clamp(3.4rem,7.4vw,8rem)}
@media(max-width:900px){
  .agenda-page .agenda-band-inner{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:700px){
  /* Phone: the print moves to the top corner of the photograph, the headline keeps the bottom. */
  .agenda-page{--agenda-pw:36vw;--agenda-pr:16px}
  .agenda-page .agenda-portrait{top:16px;bottom:auto}
  .agenda-page .agenda-portrait figcaption{color:#e6e2da;height:auto;padding-top:.4rem;flex-direction:column;gap:.1rem;font-size:.58rem}
  .agenda-page .agenda-portrait figcaption span:first-child{color:#f2efe8}
  .agenda-page .agenda-stage-copy{padding-right:16px}
  .agenda-page .agenda-band-inner{padding-right:0;min-height:0}
  html[lang=es] .agenda-page .agenda-stage h1{font-size:clamp(3rem,15.6vw,5.4rem)}
}
/* The time-zone picker wraps under its label when the column is narrow (from about 701 to 900 px). */
.agenda-page .agenda-zone-pick{flex-wrap:wrap;max-width:100%}.agenda-page .agenda-zone-select{min-width:0;max-width:100%}
@media(max-width:700px){
  /* The caption sits on the photograph: a top scrim, the same device as Music's bottom one, keeps it legible. */
  .agenda-page .agenda-cover{position:relative}
  .agenda-page .agenda-cover::after{content:"";position:absolute;inset:0 0 auto 0;height:62%;background:linear-gradient(to bottom,rgba(12,8,5,.7),rgba(12,8,5,.35) 60%,rgba(12,8,5,0));pointer-events:none}
}
/* Home social profile row */
.hero-socials{border-top:1px solid var(--rule);margin-top:1rem;padding-top:.75rem}.hero-socials ul{display:flex;flex-wrap:wrap;gap:.25rem;list-style:none;margin:0;padding:0}.hero-socials a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid transparent;border-radius:50%;color:var(--muted);transition:color .2s,border-color .2s}.hero-socials a:hover,.hero-socials a:focus-visible{color:var(--accent);border-color:var(--accent)}.hero-socials svg{width:1.2rem;height:1.2rem;fill:currentColor}
/* Film credits: poster grid on /music/ (#film) and the "On screen" block in Home's featured music. */
.film-credits.section{padding-top:clamp(3rem,6vw,5rem)}
.film-intro{max-width:60ch;color:var(--muted);margin:1.5rem 0 2.5rem}
.film-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.25rem,2.5vw,2.5rem);list-style:none;margin:0;padding:2rem 0 0;border-top:2px solid var(--text)}
.film{position:relative;display:flex;flex-direction:column}
.film-poster{margin:0 0 1rem;overflow:hidden;background:var(--rule)}
.film-poster img{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;transition:transform .4s ease}
.film:hover .film-poster img{transform:scale(1.03)}
.film-kicker{margin:0;font:.68rem var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.film-kicker time{color:inherit;font-size:inherit}
.film-title{font-size:clamp(1.5rem,2.2vw,2.1rem);letter-spacing:-.01em;margin:.5rem 0 1rem}
.film-title a{text-decoration:none}
.film-title a::after{content:"";position:absolute;inset:0}
.film:hover .film-title a,.film-title a:focus-visible{color:var(--accent)}
.film-arrow{font:400 .8rem var(--mono);margin-left:.4rem;vertical-align:super}
.film-meta{display:grid;gap:.6rem;margin:auto 0 0;padding-top:.8rem;border-top:1px solid var(--rule)}
.film-meta dt{font:.62rem var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.film-meta dd{margin:.1rem 0 0;font-size:.92rem}
.film-more{margin:2rem 0 0}
/* Jingles & Advertising Music (/music/#jingles): three pieces with their own players, apart from the catalogue. */
.jingles.section{padding-top:clamp(3rem,6vw,5rem)}
.jingles-intro{max-width:62ch;color:var(--muted);margin:1.5rem 0 2.5rem}
.jingle-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.25rem,2.5vw,2.5rem);list-style:none;margin:0;padding:2rem 0 0;border-top:2px solid var(--text)}
.jingle{display:flex;flex-direction:column;min-width:0}
.jingle-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0;font:.68rem var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.jingle-title{font-size:clamp(1.5rem,2.2vw,2.1rem);letter-spacing:-.01em;margin:.6rem 0 1rem}
.jingle-meta{display:grid;gap:.6rem;margin:0 0 1.25rem;padding-top:.8rem;border-top:1px solid var(--rule)}
.jingle-meta dt{font:.62rem var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.jingle-meta dd{margin:.1rem 0 0;font-size:.92rem}
.jingle-audio{display:block;width:100%;margin-top:auto}
.jingle-length{margin:.4rem 0 0;font:.68rem var(--mono);color:var(--muted)}
.jingles-note{max-width:62ch;margin:2rem 0 0;font-size:.85rem;color:var(--muted)}
@media(max-width:900px){.jingle-list{grid-template-columns:minmax(0,1fr)}.jingle{padding-bottom:1.5rem;border-bottom:1px solid var(--rule)}.jingle:last-child{border-bottom:0}}
.home-film{display:grid;grid-template-columns:1fr 2fr;gap:3rem;margin-top:clamp(4rem,8vw,6rem);padding-top:2rem;border-top:1px solid rgba(242,239,232,.25)}
.home-film-head h3{font-size:clamp(1.9rem,3.2vw,3rem);max-width:14ch;margin-top:.8rem}
.home-film-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;list-style:none;margin:0;padding:0}
.home-film-list a{display:block;text-decoration:none}
.home-film-list img{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;margin-bottom:.7rem;transition:opacity .2s}
.home-film-list a:hover img{opacity:.85}
.home-film-title{display:block;font:1.1rem/1.1 var(--serif)}
.home-film-year{display:block;margin-top:.3rem;font:.65rem var(--mono);letter-spacing:.06em;color:var(--mist)}
.featured-section .home-film .cv-cta{margin-left:0}
@media(max-width:900px){.film-list{grid-template-columns:repeat(2,minmax(0,1fr))}.home-film{grid-template-columns:1fr;gap:1.5rem}}
@media(max-width:700px){.film-list{gap:2rem 1rem}.film-title{font-size:1.4rem}.home-film-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 1rem}}
