@font-face{font-family:"ABC Diatype Mono Variable";src:url("./fonts/ABCDiatypeMonoVariable.ttf") format("truetype");font-style:normal;font-weight:100 900;font-display:swap}
:root{color-scheme:light;--paper:#c3c1bd;--ink:#111;--muted:#444;--edge:#898987}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--paper);color:var(--ink);font-family:"ABC Diatype Mono Variable",Arial,sans-serif;font-weight:400}
body{transition:background-color 1.45s cubic-bezier(.18,.64,.28,1)}
body[data-entered=false]{background:#f7f7f5}
body[data-entered=false][data-darkening=true]{background:var(--paper)}
button,a{font:inherit;color:inherit}
button{border:0;background:none;cursor:pointer}
button:focus-visible,a:focus-visible{outline:1px solid #111;outline-offset:4px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}
#stage,#stage canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
#stage{z-index:0;background:var(--paper);transition:background-color 1.45s cubic-bezier(.18,.64,.28,1)}
#stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 38%,transparent 31%,rgba(31,28,26,.13) 100%),linear-gradient(135deg,rgba(245,235,218,.07),transparent 42%,rgba(46,44,42,.06));opacity:.75}
#stage::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:url('./assets/film-grain.png') repeat;opacity:.13;mix-blend-mode:overlay}
body[data-entered=false] #stage{background:#f7f7f5}
body[data-entered=false][data-darkening=true] #stage{background:var(--paper)}
#connections{position:fixed;inset:0;width:100%;height:100%;z-index:1;overflow:visible;pointer-events:none}
#loading{position:fixed;z-index:2;top:53%;left:0;width:100%;text-align:center;font-size:0;color:transparent;transition:opacity .35s}
#loading::after{content:"";display:block;width:5px;height:5px;margin:auto;border-radius:50%;background:#222;animation:loading-pulse 1.15s ease-in-out infinite}
@keyframes loading-pulse{0%,100%{transform:scale(.6);opacity:.28}50%{transform:scale(1.1);opacity:.8}}
body[data-loaded=true] #loading{opacity:0;pointer-events:none}
#labels{position:fixed;inset:0;z-index:3;pointer-events:none;transition:opacity .7s ease-out}
body[data-entered=false] #labels,body[data-entered=false] .site-footer,body[data-entered=false] .sound-control{opacity:0;pointer-events:none}
.film-label{position:absolute;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;max-width:min(33vw,360px);min-height:36px;padding:4px;color:#111;text-align:left;line-height:1.2;pointer-events:auto;transition:opacity .48s,color .3s,filter .48s cubic-bezier(.16,1,.3,1),scale .48s cubic-bezier(.16,1,.3,1);transform:translateY(-50%);text-shadow:none}
.film-label[data-side=left]{align-items:flex-end;text-align:right;transform:translate(-100%,-50%)}
.film-label:hover,.film-label:focus-visible,.film-label[data-selected=true]{color:#000}
.film-label[data-hidden=true],.film-marker[data-hidden=true]{opacity:0;pointer-events:none}
.job-title{font-size:clamp(10px,.79vw,12px);letter-spacing:.01em}
.job-client{display:block;margin-top:3px;color:#3e3e3c;font-size:9px;letter-spacing:.035em}
.film-label[data-selected=true] .job-client,.film-label:hover .job-client{color:#111}
.film-marker{position:absolute;left:0;top:0;display:block;width:55px;height:34px;padding:0;pointer-events:auto;transform:translate(-50%,-50%);touch-action:manipulation}
.film-marker[data-selected=true]::before,.film-marker[data-selected=true]::after{opacity:1}
.film-marker::before,.film-marker::after{display:none}
.preview{position:fixed;z-index:4;width:min(330px,27vw);padding:8px 8px 12px;background:rgba(221,220,216,.72);border:1px solid rgba(58,55,51,.32);box-shadow:0 18px 50px #24211d33,0 2px 9px #24211d1a;backdrop-filter:blur(22px) saturate(.75);-webkit-backdrop-filter:blur(22px) saturate(.75);opacity:0;transform:translateX(var(--preview-shift,0px)) scale(.955);transform-origin:var(--preview-origin,center);transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .52s cubic-bezier(.16,1,.3,1),top .5s cubic-bezier(.16,1,.3,1),left .5s cubic-bezier(.16,1,.3,1);pointer-events:none}
.preview[data-open=true]{opacity:1;transform:translateX(0) scale(1);pointer-events:auto}
.preview::before{content:"";position:absolute;top:var(--connector-top,50%);width:20px;height:1px;background:rgba(24,23,21,.55);pointer-events:none}
.preview[data-side=left]::before{left:-21px}
.preview[data-side=right]::before{right:-21px}
.preview-image{position:relative;aspect-ratio:var(--poster-aspect,16/9);background:#0c0c0c;overflow:hidden}
.preview-image img{display:block;width:100%;height:100%;object-fit:cover}
.preview-image-open{position:absolute;inset:0;width:100%;height:100%;padding:0;display:grid;place-items:center;background:transparent}
.preview-close{position:absolute;z-index:2;right:15px;top:15px;width:25px;height:25px;display:grid;place-items:center;padding:0;border-radius:50%;background:rgba(221,220,216,.77);backdrop-filter:blur(7px);font-size:19px;line-height:1}
#preview-fallback{position:absolute;inset:0;display:grid;place-items:center;font-size:9px;color:#111}
.preview-meta{display:flex;justify-content:space-between;gap:8px;margin:11px 1px 7px;font-size:9px;color:#333;text-transform:uppercase;letter-spacing:.05em}
#preview-open{display:flex;justify-content:space-between;align-items:start;gap:16px;width:100%;padding:0 1px;text-align:left;font-size:12px;line-height:1.4}
#preview-open > span:last-child{font-size:15px}
.preview-venue{display:block;margin-top:3px;color:#777;font-size:10px}
.work-credits{padding:3px 0;color:#333;text-decoration:underline;text-underline-offset:3px;font-size:10px}
.work-credits:hover{color:#000}
#preview-credits-open{display:block;margin-top:12px}
.site-footer{position:fixed;z-index:5;bottom:19px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:end;gap:15px;font-size:10px;color:#222;transition:opacity .7s ease-out}
.site-footer button{padding:4px 0}
.site-footer button:hover{color:#000}
.footer-left{display:flex;gap:20px;align-items:center;min-width:0}
.name-art{display:flex;align-items:center;flex:none;width:139px;height:32px;cursor:pointer}
.name-art-mark{display:block;width:100%;height:auto;aspect-ratio:947/118;overflow:visible;pointer-events:none}
.circum-link{display:block;flex:none;width:99px;line-height:0;opacity:.9;transition:opacity .2s}
.circum-link:hover{opacity:1}
.circum-link img{display:block;width:100%;height:auto;filter:brightness(0)}
.panel{position:fixed;z-index:10;top:0;bottom:0;left:0;width:min(560px,100vw);padding:29px 32px 35px;background:#d8d8d5;border-right:1px solid #90908d;overflow:auto}
#credits{z-index:30}
.panel-head{display:flex;justify-content:space-between;gap:20px;position:sticky;top:-29px;padding:0 0 35px;background:#d8d8d5;font-size:10px;letter-spacing:.08em}
.panel-head button{font-size:10px;color:#333}
#index-list{list-style:none;margin:20px 0 0;padding:0}
#index-list li{border-top:1px solid #aaa}
#index-list button{width:100%;display:grid;grid-template-columns:66px 1fr 17px;gap:8px;padding:14px 0;text-align:left;font-size:12px;line-height:1.4}
#index-list button:hover{color:#000}
#index-list .year{color:#333;font-size:10px}
#index-list .category{display:block;color:#444;font-size:9px;margin-top:4px}
.about-pending{color:#333;font-size:11px;line-height:1.5}
#credits-content{padding:0 0 45px;font-size:11px;line-height:1.55}
#credits-content h2{font-weight:400;font-size:14px;margin:28px 0 10px}
#credits-content dl{display:grid;grid-template-columns:42% 58%;gap:6px 10px;margin:0;color:#222}
#credits-content dt{color:#444}
#credits-content dd{margin:0;color:#111}
#credits-content a{color:#222;text-decoration:underline;text-underline-offset:3px}
#credits-content p{color:#333}
.player{position:fixed;z-index:20;inset:0;display:flex;flex-direction:column;background:#d5d5d2;color:#111;padding:25px 30px 22px}
.player-head{display:flex;justify-content:space-between;gap:20px;align-items:start;min-height:74px}
.player-head h2{font-weight:400;font-size:13px;margin:7px 0 0;letter-spacing:.02em}
.player-head h2 .player-venue{display:block;margin-top:5px;color:#888;font-size:10px}
.player-head span,.player-head button,.player-foot{font-size:10px;color:#333}
.player-head button:hover{color:#000}
.player-frame{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.player-frame video{display:block;width:100%;height:100%;object-fit:contain;background:#000}
.player-foot{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:49px}
#film-choices{display:flex;flex:1;min-width:0;gap:18px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin;scrollbar-color:#555 #111}
#film-choices button{flex:none;padding:4px 0;color:#444}
#film-choices button[aria-current=true],#film-choices button:hover{color:#000;border-bottom:1px solid #111}
@media(max-width:900px){
 #loading{top:39%}
 .site-footer{bottom:13px;left:15px;right:15px;font-size:9px;gap:7px}
 .footer-left{gap:11px}
 .name-art{width:96px;height:17px}
 .circum-link{width:78px}
 .film-label{max-width:calc(50vw - 40px);width:calc(50vw - 40px);line-height:1.12;min-height:35px;padding:3px 3px 3px 22px;background:linear-gradient(90deg,rgba(236,235,231,.3),rgba(236,235,231,.07));border-top:1px solid rgba(45,44,42,.24);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);text-shadow:none}
 .film-label[data-selected=true]{background:rgba(231,230,226,.66);border-top-color:#161616}
 .job-title{font-size:11px}
 .job-client{font-size:9px;margin-top:3px}
 .film-marker{width:24px;height:28px}
 .film-marker::before{content:"";position:absolute;display:block;left:3px;top:14px;width:14px;height:1px;background:#222}
 .film-marker::after{content:"";position:absolute;display:block;left:17px;top:11px;width:5px;height:5px;border-radius:50%;background:#111}
 .preview{width:min(230px,calc(100vw - 32px));bottom:auto!important;--preview-shift:0px;--preview-origin:50% 100%;transform:translateY(14px) scale(.97)}
 .preview[data-open=true]{transform:translateY(0) scale(1)}
 .preview::before{display:none}
 .panel{padding:25px 20px}.panel-head{top:-25px}
 .player{padding:18px 16px}.player-head{min-height:70px}.player-head h2{font-size:11px;max-width:78vw}.player-foot{align-items:start;padding-top:12px;line-height:1.5}
}
@media(max-width:390px){.name-art{width:88px;height:16px}.footer-left{gap:8px}.circum-link{width:68px}}
@media(max-width:900px) and (max-height:650px), (max-width:370px){
 .film-label{max-width:calc(50vw - 20px);width:calc(50vw - 20px);min-height:27px;padding:2px 2px 2px 16px;line-height:1.05}
 .job-title{font-size:9px}.job-client{font-size:8px;margin-top:2px}
 .film-marker{width:21px;height:23px}
 .film-marker::before{top:11px;left:1px;width:12px}.film-marker::after{top:8px;left:13px}
 .preview{width:min(222px,calc(100vw - 32px))}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* Black observatory: only a trace of grey separates the surfaces. */
:root{color-scheme:dark;--paper:#000;--ink:#dedede;--muted:#777;--edge:#252525}
body{transition:background-color 1.65s cubic-bezier(.22,.7,.2,1)}
body[data-entered=false]{background:#000}
#stage{background:var(--paper);touch-action:none;cursor:grab;transition:background 1.65s cubic-bezier(.22,.7,.2,1)}
#stage canvas{touch-action:none;transition:filter .42s cubic-bezier(.2,.7,.2,1)}
#stage::after{background:radial-gradient(ellipse at 50% 47%,rgba(32,32,32,.11),transparent 58%);opacity:1}
#stage::before{opacity:.035}
body[data-entered=false] #stage{background:#000}
body[data-entered=false][data-darkening=true] #stage{background:var(--paper)}
body[data-dragging=true] #stage,body[data-dragging=true] .film-label{cursor:grabbing}
body[data-dragging=true] #labels{pointer-events:none}
#labels{touch-action:none;user-select:none;-webkit-user-select:none}
button:focus-visible,a:focus-visible{outline:1px solid #aaa;border-radius:6px}
#entry{position:fixed;inset:0;z-index:8;pointer-events:none;transition:opacity .45s}
#enter{position:absolute;left:50%;top:47%;width:160px;height:160px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
#enter:disabled{cursor:wait}
#enter span{position:absolute;top:calc(100% + 18px);left:50%;width:230px;transform:translateX(-50%);color:#777;font-size:10px;letter-spacing:.12em;transition:color .5s;white-space:nowrap}
#entry[data-open=true]{opacity:0;pointer-events:none}
#entry[data-open=true] #enter{pointer-events:none}
#entry[data-open=true] #enter span{opacity:0}
#cosmic-flash{position:fixed;inset:0;z-index:7;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 45%,#252525 0%,#101010 19%,#050505 40%,transparent 73%)}
body[data-burst=true] #cosmic-flash{animation:cosmic-bloom 1.65s cubic-bezier(.16,.7,.23,1) both}
@keyframes cosmic-bloom{0%{opacity:0;transform:scale(.16)}18%{opacity:.2}100%{opacity:0;transform:scale(2.5)}}
.sound-control{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:32px;padding:0!important;color:#999;white-space:nowrap;transition:color .25s}
.sound-control:hover,.sound-control[aria-pressed=true]{color:#ddd}
.sound-control svg{display:block;flex:none;width:16px;height:16px}
.sound-prompt{font-size:9px;letter-spacing:.02em;color:#777}
.sound-control:hover .sound-prompt{color:#bbb}
.sound-control[aria-pressed=true] .sound-prompt{display:none}
.sound-control .sound-wave,.sound-control .sound-slash{transition:opacity .2s}
.sound-control[aria-pressed=true] .sound-slash,.sound-control[aria-pressed=false] .sound-wave{opacity:0}
.film-label{color:#d1d1d1;max-width:min(24vw,280px);width:max-content;padding:7px 4px;min-height:40px;transition:opacity .15s,color .2s,filter .15s;transform:translateY(-50%);background:none;border:none;backdrop-filter:none;-webkit-backdrop-filter:none;text-shadow:none;touch-action:none;border-radius:8px}
.film-label[data-side=left]{transform:translate(-100%,-50%)}
.film-label:hover,.film-label:focus-visible,.film-label[data-selected=true]{color:white;background:none;border:none}
.job-title{font-size:clamp(10px,.8vw,12px);font-weight:450;letter-spacing:.025em;text-shadow:0 0 1px rgba(238,236,233,.04)}
.job-client{color:#777;font-size:9px;letter-spacing:.045em;margin-top:5px}
.film-label[data-selected=true] .job-client,.film-label:hover .job-client{color:#bbb}
.film-marker{touch-action:none;width:32px;height:36px}
.film-marker::before,.film-marker::after{display:none}
.preview{background:rgba(9,9,9,.96);border:1px solid #292929;border-radius:20px;padding:8px 8px 15px;box-shadow:0 24px 70px #0009;backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);opacity:0;filter:blur(8px);transform:translate(var(--preview-enter-x,0px),var(--preview-enter-y,12px)) scale(.97);transform-origin:var(--preview-origin,center);transition:opacity .7s cubic-bezier(.22,1,.36,1),filter .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1),top .6s cubic-bezier(.22,1,.36,1),left .6s cubic-bezier(.22,1,.36,1)}
.preview[data-open=true]{opacity:1;filter:blur(0);transform:translateY(0) scale(1)}
.preview::before{display:none}
.preview[data-dock=left]::before,.preview[data-dock=right]::before{display:block;top:var(--connector-cross);width:19px;height:1px;background:#555}
.preview[data-dock=left]::before{left:auto;right:-20px}
.preview[data-dock=right]::before{left:-20px;right:auto}
.preview[data-dock=above]::before,.preview[data-dock=below]::before{display:block;left:var(--connector-cross);width:1px;height:15px;background:#555}
.preview[data-dock=above]::before{top:auto;bottom:-16px}
.preview[data-dock=below]::before{top:-16px;bottom:auto}
.preview-image{border-radius:13px;touch-action:pan-y}
.preview-image #preview-video,.preview-image .preview-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .8s ease;pointer-events:none}
.preview-image #preview-video[data-ready=true],.preview-image .preview-slide.is-visible{opacity:1}
.preview-image #preview-full-video:not([hidden]){position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%;object-fit:cover;background:#000;opacity:0;transition:opacity .35s ease;pointer-events:none}
.preview-image #preview-full-video[data-ready=true]{opacity:1}
#preview-full-video:fullscreen,#preview-full-video:-webkit-full-screen{object-fit:contain!important;opacity:1!important;pointer-events:auto!important}
.preview-controls{position:absolute;z-index:3;left:0;right:0;bottom:0;padding:21px 7px 7px;background:linear-gradient(transparent,rgba(0,0,0,.83));color:#fff;opacity:0;transform:translateY(7px);pointer-events:none;transition:opacity .32s ease,transform .32s ease}
.preview-controls[data-visible=true]{opacity:1;transform:none;pointer-events:auto}
.preview-controls [hidden]{display:none!important}
.preview-timeline{display:flex;align-items:center;margin:0 4px 6px;pointer-events:none}
#preview-progress{display:block;flex:1;min-width:0;height:3px;border:0;appearance:none;-webkit-appearance:none;background:rgba(255,255,255,.3)}
#preview-progress::-webkit-progress-bar{background:rgba(255,255,255,.3)}
#preview-progress::-webkit-progress-value{background:#fff}
#preview-progress::-moz-progress-bar{background:#fff}
.preview-control-row{display:flex;align-items:center;justify-content:flex-end;gap:6px}
.preview-control-row button{display:grid;place-items:center;flex:none;width:30px;height:30px;padding:0;border-radius:50%;background:rgba(0,0,0,.57);color:#fff;font-size:18px;line-height:1;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.preview-control-row button:hover,.preview-control-row button:focus-visible{background:rgba(255,255,255,.25)}
.preview-control-row button:disabled{opacity:.35}
.preview-control-row svg{width:17px;height:17px}
.preview-audio-wave{display:none}
#preview-audio[data-muted=false] .preview-audio-wave{display:block}
#preview-audio[data-muted=false] .preview-audio-slash{display:none}
.preview-close{background:#171717;color:#ddd;width:29px;height:29px}
.preview-meta{color:#888;margin:13px 7px 8px}
#preview-open{padding:0 7px;font-size:11px}
#preview-credits-open{margin-left:7px;color:#aaa}
#preview-fallback{color:#bbb}
.work-credits,.work-credits:hover{color:#bbb}
.site-footer{z-index:18;color:#bcbcbc;bottom:23px;align-items:center}
.site-footer::before{content:"";position:fixed;left:0;right:0;bottom:0;height:130px;background:linear-gradient(to bottom,transparent,rgba(0,0,0,.55) 55%,rgba(0,0,0,.94));pointer-events:none;z-index:-1}
.site-footer button{padding:8px 0}
.site-footer button:hover{color:#fff}
.name-art{width:95px;height:32px;transform:none}
.circum-link{opacity:1;transform:translateY(-4px)}
.circum-link img{filter:brightness(0) invert(73.7%)}
.panel{top:12px;left:12px;bottom:12px;width:min(550px,calc(100vw - 24px));border:1px solid #262626;border-radius:24px;background:rgba(8,8,8,.98);box-shadow:0 20px 80px #000a;backdrop-filter:blur(30px)}
#index-backdrop,#about-backdrop{position:fixed;inset:0;z-index:9;cursor:pointer}
.panel-head{background:#080808;color:#ddd;padding-top:10px}
.panel-head button,.about-pending,#credits-content p,#credits-content dt{color:#888}
#index-list li{border-color:#292929}
#index-list button:hover{color:#fff}
#index-list .year,#index-list .category{color:#888}
#credits-content dl,#credits-content dd,#credits-content a{color:#ddd}
.player{background:#000;color:#ddd;opacity:1;transition:opacity .42s cubic-bezier(.2,.7,.2,1),transform .48s cubic-bezier(.2,.8,.2,1)}
.player[data-opening=true],.player[data-closing=true]{opacity:0;pointer-events:none}
.player[data-swiping=true]{transition:none}
.player-head,.player-foot > button,.project-strip-label{touch-action:none}
.player-foot{touch-action:pan-x}
.player-actions{display:flex;align-items:center;gap:18px;flex-shrink:0}
.player-actions .view-switch{margin:0}
#project-stills,#project-clips,#film-choices{touch-action:pan-x}
#photo-gallery{touch-action:pan-y}
.player img,.feed img{user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}
@media(max-width:900px){
 .player-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;min-height:100px;padding-bottom:10px}
 .player-actions{grid-column:1/-1;grid-row:1;justify-content:space-between}
 .player-head h2{max-width:100%;margin-top:4px}
 .player-head > img{grid-column:2;grid-row:2}
}
.film-transition{position:fixed;z-index:24;display:block;object-fit:cover;pointer-events:none;margin:0;border-radius:13px;box-shadow:0 18px 60px #0009;transition:left .48s cubic-bezier(.2,.72,.18,1),top .48s cubic-bezier(.2,.72,.18,1),width .48s cubic-bezier(.2,.72,.18,1),height .48s cubic-bezier(.2,.72,.18,1),border-radius .48s cubic-bezier(.2,.72,.18,1),opacity .18s linear .29s}
/* Diary: a worn schoolbook lying in a small pool of light. Pages, edges and the turning leaf are placed in 3D by app.js. */
.diary-page{position:fixed;z-index:12;inset:0;display:flex;flex-direction:column;overflow:hidden;color:#d6d1c7;background:#000;opacity:1;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1),border-radius .5s cubic-bezier(.22,1,.36,1)}
.diary-page::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 50% 58% at 45% 50%,rgba(122,110,93,.6),rgba(56,50,43,.38) 50%,rgba(14,12,10,.2) 74%,rgba(0,0,0,0) 92%)}
.diary-page::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:url('./assets/film-grain.png') repeat;mix-blend-mode:screen;opacity:.06}
.panel{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1);transition:opacity .42s cubic-bezier(.22,1,.36,1),filter .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1)}
.panel{transform-origin:left center}
#index,#about{touch-action:pan-y}
.panel[data-back-swiping=true],.feed[data-back-swiping=true]{transition:none}
/* Pull down to close (app.js bindPullClose): the surface follows the finger, then drops away or settles back. */
.panel[data-pulling=true],.diary-page[data-pulling=true]{transition:none}
.panel[data-pull-closing=true],.diary-page[data-pull-closing=true]{transition:opacity .38s ease,filter .4s ease,transform .44s cubic-bezier(.33,.7,.3,1),border-radius .44s ease}
.panel[data-opening=true],.panel[data-closing=true]{opacity:0;filter:blur(8px);transform:translate3d(-18px,0,0) scale(.985);pointer-events:none}
.diary-page[data-opening=true],.diary-page[data-closing=true]{opacity:0;pointer-events:none}
.diary-head{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:20px;flex:none;padding:max(25px,env(safe-area-inset-top)) 32px 0}
.diary-head h2{margin:0;font-size:11px;font-weight:400;letter-spacing:.12em;color:#d6d1c7}
.diary-head button{padding:5px 0;color:#9b978f;font-size:10px}
.diary-head button:hover{color:#fff}
.diary-stage{position:relative;z-index:1;flex:1;min-height:0;margin-bottom:64px;overflow:hidden;outline:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;perspective:1600px;perspective-origin:50% 47%}
.dbk{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.dbk-face,.dbk-edge,.dbk-under,.dbk-shadow,.dbk-cast,.dbk-leaf,.dbk-strip,.dbk-spine{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none}
.dbk-face{width:var(--dw);height:var(--dh);overflow:hidden;background:#e7e0d0;visibility:hidden}
.dbk-face[data-slot]{visibility:visible}
.dbk-face[data-kind=cover],.dbk-face[data-kind=inside]{background:none}
.dbk-face[data-mask=r]{-webkit-mask-image:var(--dmask-r);mask-image:var(--dmask-r)}
.dbk-face[data-mask=l]{-webkit-mask-image:var(--dmask-l);mask-image:var(--dmask-l)}
.dbk-face[data-mask]{-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.dbk-face > .diary-clip,.dbk-face > img{position:absolute;inset:0;display:block;width:100%;height:100%;margin:0}
.dbk-face video{display:block;width:100%;height:100%;object-fit:cover;background:#16130f}
.dbk-print,.dbk-grain,.dbk-age,.dbk-light,.dbk-vlight{position:absolute;inset:0;pointer-events:none}
.dbk-age{background:var(--dage) 0 0/100% 100% no-repeat;mix-blend-mode:multiply}
.dbk-print{background:rgb(31,27,22);mix-blend-mode:screen;opacity:var(--dprint,.72)}
.dbk-grain{background-image:var(--dgrain);background-size:192px 192px;mix-blend-mode:multiply}
.dbk-vlight{background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.035) 55%,rgba(0,0,0,.1) 100%)}
.dbk-face[data-kind=cover] .dbk-light,.dbk-face[data-kind=cover] .dbk-vlight{-webkit-mask:url('./assets/diary-cover.webp') 0 0/100% 100% no-repeat;mask:url('./assets/diary-cover.webp') 0 0/100% 100% no-repeat}
.dbk-face[data-kind=inside] .dbk-light,.dbk-face[data-kind=inside] .dbk-vlight{-webkit-mask:url('./assets/diary-cover-inside.webp') 0 0/100% 100% no-repeat;mask:url('./assets/diary-cover-inside.webp') 0 0/100% 100% no-repeat}
.dbk-edge{background:#9a917f}
.dbk-edge-b{background:linear-gradient(180deg,rgba(0,0,0,0) calc(100% - 1.3px),#34506f calc(100% - 1.3px)),repeating-linear-gradient(180deg,#a79d89 0 .55px,#8a8170 .55px 1.1px)}
.dbk-edge-o{background:linear-gradient(270deg,#34506f 1.3px,rgba(0,0,0,0) 1.3px),repeating-linear-gradient(90deg,#958b78 0 .55px,#7a7261 .55px 1.1px)}
.dbk-edge-o[data-side=l]{background:linear-gradient(90deg,#46698f 1.3px,rgba(0,0,0,0) 1.3px),repeating-linear-gradient(90deg,#d4cbb8 0 .55px,#b4aa95 .55px 1.1px)}
.dbk-under{-webkit-mask:var(--dmask-r) 0 0/100% 100% no-repeat;mask:var(--dmask-r) 0 0/100% 100% no-repeat;background:#a2987f}
.dbk-under[data-side=l]{-webkit-mask:var(--dmask-l) 0 0/100% 100% no-repeat;mask:var(--dmask-l) 0 0/100% 100% no-repeat;background:#b3a991}
.dbk-under[data-n="0"]{background:#c4baa3}
.dbk-under[data-n="0"][data-side=l]{background:#d3c9b3}
.dbk-under[data-n="2"]{background:#857b66}
.dbk-under[data-n="2"][data-side=l]{background:#978d77}
/* The card spine, in the dark worn blue of the photographed cover edge (a bright blue read as a stray line). */
.dbk-spine{background:radial-gradient(ellipse 60% 5px at 50% 23%,#5b5f64 0 45%,rgba(0,0,0,0) 60%),radial-gradient(ellipse 60% 5px at 50% 77%,#5b5f64 0 45%,rgba(0,0,0,0) 60%),linear-gradient(90deg,#121822,#1c283a 50%,#141b27)}
.dbk-shadow{border-radius:2.2%/1.6%;box-shadow:1px 2px 3px 1px rgba(0,0,0,.62),8px 13px 26px 3px rgba(0,0,0,.55),24px 38px 90px 18px rgba(0,0,0,.5)}
.dbk-cast{width:var(--dw);height:var(--dh);display:none}
.dbk-cast canvas{display:block;width:100%;height:100%}
.dbk-leaf{transform-style:preserve-3d;display:none}
.dbk-strip{top:calc(var(--dh)*-.5);height:var(--dh);transform-origin:0 50%;transform-style:preserve-3d}
.dbk-sf{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.dbk-sf canvas{display:block;width:100%;height:100%}
.dbk-sb{transform:rotateY(180deg)}
.diary-step{position:absolute;z-index:4;top:50%;width:44px;height:44px;margin-top:-22px;color:#e3ded4;font-size:16px;opacity:0;pointer-events:none;transition:opacity .2s ease}
.diary-step:focus-visible{opacity:1;pointer-events:auto;outline:1px solid #ffffff55;outline-offset:-6px}
#diary-prev{left:10px}
#diary-next{right:10px}
body[data-feed-open=true] .site-footer,body[data-diary-open=true] .site-footer{z-index:18}
body[data-diary-open=true] .site-footer::before{opacity:0}
@media(max-width:700px){
 .diary-head{padding:max(20px,env(safe-area-inset-top)) 19px 0}
 .diary-stage{margin-bottom:max(62px,calc(env(safe-area-inset-bottom) + 50px))}
}
@media(max-height:500px) and (orientation:landscape){
 .diary-head{padding-top:max(12px,env(safe-area-inset-top))}
 .diary-stage{margin-bottom:46px}
}
/* End of diary */
.player-head span,.player-head button,.player-foot{color:#888}
.player-head button:hover{color:white}
.player-frame video{border-radius:14px}
#film-choices button{color:#888}
#film-choices button[aria-current=true],#film-choices button:hover{color:#fff;border-color:#aaa}
#player-mark{width:76px;height:auto;max-height:26px;object-fit:contain;align-self:flex-start;margin:0 auto 0 0}
.photo-gallery{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;overflow-anchor:none;padding:2vh 2vw 5vh;scrollbar-color:#555 #111;scroll-snap-type:y proximity}
.photo-grid{width:100%;margin:auto;display:flex;flex-direction:column;gap:5vh}
.photo-grid figure{width:100%;min-height:calc(100dvh - 178px);margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;scroll-snap-align:start}
.photo-grid img{display:block;width:100%;height:calc(100dvh - 190px);object-fit:contain}
.photo-grid figcaption{font-size:10px;color:#888;margin-top:8px}
.photo-gallery[data-layout=salomon]{background:#080808;color:#ddd;border-radius:12px}
.project-strip-label{margin:8px 0 0;color:#888;font-size:9px;letter-spacing:.07em;text-transform:uppercase}
.project-stills,.project-clips{display:flex;align-items:center;gap:10px;overflow-x:auto;overflow-y:hidden;padding:6px 0 2px;scrollbar-color:#555 #111;scrollbar-width:thin;overscroll-behavior-x:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.project-stills{min-height:116px}.project-clips{min-height:139px}
.project-stills button{flex:1 1 0;min-width:0;padding:0;scroll-snap-align:start}
.project-stills img{display:block;width:100%;height:clamp(96px,calc((100vw - 60px)/18),150px);object-fit:cover;border-radius:5px}
.project-stills button:hover img,.project-stills button:focus-visible img{outline:1px solid #bbb;outline-offset:-1px}
.project-clips button{flex:none;width:184px;padding:0;color:#888;font-size:10px;text-align:left;opacity:.72;scroll-snap-align:start}
.project-clips button:hover,.project-clips button[aria-current=true]{color:#fff;opacity:1}
.project-clips button[aria-current=true] img{outline:1px solid #bbb;outline-offset:-1px}
.project-clips img{display:block;width:100%;height:108px;object-fit:cover;border-radius:5px;margin-bottom:5px}
.still-lightbox:not([open]){display:none}
.still-lightbox[open]{position:fixed;inset:0;display:flex;flex-direction:column;width:min(96vw,1300px);max-width:none;height:min(94dvh,960px);max-height:none;margin:auto;padding:14px;background:#090909;color:#eee;border:1px solid #555;box-shadow:0 25px 90px #000c}
.still-lightbox::backdrop{background:rgba(0,0,0,.86)}
.still-lightbox-head{display:flex;justify-content:space-between;gap:20px;align-items:center;min-height:32px;font-size:10px;color:#aaa}
.still-lightbox-head button{color:#eee;font-size:10px}
.still-lightbox-frame{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;align-items:center;gap:8px;flex:1;min-height:0}
.still-lightbox-frame img{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}
.still-lightbox-frame button{font-size:28px;color:#ddd}
.still-lightbox-frame button:disabled{opacity:.2}
@media(max-width:900px){
 .film-label{width:max-content;max-width:145px;min-height:38px;padding:5px 3px;line-height:1.2;background:none;border:none;backdrop-filter:none;-webkit-backdrop-filter:none}
 .film-label[data-selected=true]{background:none;border:none}
 .job-title{font-size:10px}.job-client{font-size:8px;margin-top:4px}
 .film-marker{width:28px;height:34px}.film-marker::before,.film-marker::after{display:none}
 .preview{width:min(270px,calc(100vw - 32px));border-radius:18px}
 .site-footer{bottom:max(18px,env(safe-area-inset-bottom));left:17px;right:17px}
 #enter{width:130px;height:130px}
 .name-art{width:76px;height:32px}
 .name-art-mark{transform:translateY(2px)}
 .player{padding-top:max(18px,env(safe-area-inset-top))}
 #player-mark{width:58px;max-height:20px}
 .photo-gallery{padding:12px 8px 24px}
 .photo-grid{gap:18px}
 .photo-grid figure{min-height:calc(100dvh - 145px)}
 .photo-grid figure{min-height:0}
 .photo-grid img{width:100%;height:auto;max-height:none;object-fit:contain}
 .project-stills{min-height:91px;gap:8px}.project-stills button{flex:0 0 154px}.project-stills img{height:82px}
 .project-clips{min-height:111px;gap:8px}.project-clips button{width:138px;font-size:9px}.project-clips img{height:82px}
 .still-lightbox[open]{width:100vw;height:100dvh;padding:12px;border:0}.still-lightbox-frame{grid-template-columns:24px minmax(0,1fr) 24px;gap:4px}
 .preview-control-row button{width:27px;height:27px;font-size:17px}.preview-control-row svg{width:15px;height:15px}
}
@media(max-width:390px){.film-label{max-width:125px}.job-title{font-size:9px}.job-client{font-size:8px}.name-art{width:68px;height:32px}}
@media(max-width:390px){.circum-link{width:54px}.sound-control{gap:4px}.sound-prompt{font-size:8px}}
@media(max-width:360px){.site-footer{left:12px;right:12px}.footer-left{gap:6px}.sound-prompt{display:none!important}}
@media(prefers-reduced-motion:reduce){.panel,.diary-page{transition:none!important}}

/* Refinement, September 2026: motion, depth and texture. */
#stage canvas{transition:opacity 1.8s cubic-bezier(.22,1,.36,1),filter .42s cubic-bezier(.2,.7,.2,1)}
#stage::before{opacity:.05;animation:grain-shift 1.1s steps(5) infinite}
@keyframes grain-shift{0%{background-position:0 0}20%{background-position:-37px 21px}40%{background-position:19px -43px}60%{background-position:-11px 33px}80%{background-position:41px 9px}100%{background-position:0 0}}
#stage::after{background:radial-gradient(ellipse 70% 62% at 50% 46%,rgba(30,28,26,.12),transparent 62%),radial-gradient(ellipse 120% 95% at 50% 50%,transparent 58%,rgba(0,0,0,.62) 100%)}
#loading{top:50%;transform:translateY(-50%);font-size:10px;letter-spacing:.34em;text-indent:.34em;color:#4d4d4d;font-variant-numeric:tabular-nums;transition:opacity .8s ease}
#loading::after{display:none}
#enter span{letter-spacing:.14em;transition:color .6s ease,letter-spacing .9s cubic-bezier(.22,1,.36,1)}
#enter:hover span,#enter:focus-visible span{color:#c9c9c9;letter-spacing:.24em}
#enter:focus-visible{outline:none}
body[data-burst=true] #cosmic-flash{animation:cosmic-bloom 1.9s cubic-bezier(.16,.7,.23,1) both}
@keyframes cosmic-bloom{0%{opacity:0;transform:scale(.2)}14%{opacity:.34}100%{opacity:0;transform:scale(2.8)}}
.film-label{transition:opacity .15s,color .35s ease,filter .15s}
.film-label[data-glance=true]{color:#fff}
.film-label[data-glance=true] .job-client{color:#aaa}
/* border-box: the global * rule does not reach pseudo-elements, and a content-box ring sat 1px right and low of the dot. */
.film-marker::after{content:"";display:block!important;position:absolute;left:50%;top:50%;box-sizing:border-box;width:15px;height:15px;margin:0;translate:-50% -50%;border:1px solid rgba(236,236,236,.5);border-radius:50%;background:none;opacity:0;transform:scale(.3);transition:opacity .4s ease,transform .7s cubic-bezier(.22,1,.36,1);pointer-events:none}
.film-marker[data-selected=true]::after,.film-marker[data-hot=true]::after{opacity:1;transform:scale(1)}
.film-marker[data-glance=true]::after{opacity:.55;transform:scale(.8)}
.film-marker[data-selected=true]::after{animation:marker-pulse 2.8s ease-in-out .7s infinite}
@keyframes marker-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.28);opacity:.45}}
/* Preview: the image unmasks from its dock while the copy follows. */
.preview-image{clip-path:inset(0 0 0 0 round 13px);transition:clip-path .95s cubic-bezier(.22,1,.36,1)}
.preview[data-open=false] .preview-image{clip-path:inset(9% 9% 9% 9% round 13px)}
#preview-image{transform:scale(1.001);transition:transform 1.3s cubic-bezier(.22,1,.36,1)}
.preview[data-open=false] #preview-image{transform:scale(1.1)}
.preview .preview-meta,.preview #preview-open,.preview #preview-credits-open{transition:opacity .55s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.preview[data-open=false] .preview-meta,.preview[data-open=false] #preview-open,.preview[data-open=false] #preview-credits-open{opacity:0;transform:translateY(7px)}
.preview[data-open=true] .preview-meta{transition-delay:.12s}
.preview[data-open=true] #preview-open{transition-delay:.18s}
.preview[data-open=true] #preview-credits-open{transition-delay:.24s}
.preview.is-switching #preview-image{animation:preview-swap .75s cubic-bezier(.22,1,.36,1)}
.preview.is-switching #preview-title{animation:preview-copy .6s cubic-bezier(.22,1,.36,1)}
@keyframes preview-swap{from{opacity:.2;transform:scale(1.06)}to{opacity:1;transform:scale(1.001)}}
@keyframes preview-copy{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
#preview-open > span:last-child{transition:transform .45s cubic-bezier(.22,1,.36,1)}
#preview-open:hover > span:last-child{transform:translate(3px,-3px)}
.preview{border-color:#232323;box-shadow:0 30px 80px #000c,inset 0 1px 0 rgba(255,255,255,.04)}
/* Index rows arrive in sequence; a poster follows the pointer beside the list. */
#index-list.is-in li{animation:index-row .75s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--i,0)*26ms + 90ms)}
@keyframes index-row{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
#index-list button{transition:color .25s ease,padding-left .5s cubic-bezier(.22,1,.36,1)}
#index-list button:hover,#index-list button:focus-visible{padding-left:10px}
#index-list button > span:last-child{transition:transform .5s cubic-bezier(.22,1,.36,1)}
#index-list button:hover > span:last-child{transform:translate(3px,-3px)}
.index-peek{position:fixed;z-index:11;left:0;top:0;width:250px;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:12px;pointer-events:none;opacity:0;transform:translate3d(var(--x,0),var(--y,0),0) scale(.9);transition:opacity .35s ease,transform .7s cubic-bezier(.22,1,.36,1);box-shadow:0 24px 70px #000d;background:#0c0c0c}
.index-peek[data-visible=true]{opacity:1;transform:translate3d(var(--x,0),var(--y,0),0) scale(1)}
/* Footer: underlines draw on; items settle in after the constellation. */
.footer-left > button:not(.sound-control){position:relative}
.footer-left > button:not(.sound-control)::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right center;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.footer-left > button:not(.sound-control):hover::after,.footer-left > button[aria-expanded=true]::after{transform:scaleX(1);transform-origin:left center}
.footer-left > *,.circum-link{transition:opacity .9s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1)}
body:not([data-settled=true]) .footer-left > *,body:not([data-settled=true]) .circum-link{opacity:0;transform:translateY(8px)}
.footer-left > :nth-child(2){transition-delay:.06s}.footer-left > :nth-child(3){transition-delay:.12s}.footer-left > :nth-child(4){transition-delay:.18s}.footer-left > :nth-child(5){transition-delay:.24s}.circum-link{transition-delay:.3s}
.sound-control[aria-pressed=true] .sound-wave{animation:sound-breathe 1.8s ease-in-out infinite}
@keyframes sound-breathe{0%,100%{opacity:1}50%{opacity:.3}}
@media(prefers-reduced-motion:reduce){#stage::before,.film-marker[data-selected=true]::after,#index-list.is-in li{animation:none}.index-peek{display:none}}
@media(pointer:coarse),(max-width:900px){.index-peek{display:none}}

/* Revision, 27 September 2026: steady titles, film controls, credits, swipe viewer, feed. */
/* Titles ride on the compositor: a translate instead of left/top, and the
   script eases blur and opacity itself, so slow drifts never step or pop. */
.film-label{left:0;top:0;will-change:transform,opacity,filter;backface-visibility:hidden;transition:color .35s ease}
.pui-sound[data-muted=true] .i-wave,.pui-sound[data-muted=false] .i-mute,.sound-icon[data-muted=true] .i-wave,.sound-icon[data-muted=false] .i-mute{display:none}

/* Film controls */
.player-frame{position:relative;isolation:isolate;--pic-x:0px;--pic-y:0px;--pic-w:100%;--pic-h:100%;touch-action:none}
.player-frame video{border-radius:0;background:transparent;clip-path:inset(var(--pic-y) var(--pic-x) round 14px)}
.pui-surface{position:absolute;top:var(--pic-y);bottom:var(--pic-y);left:var(--pic-x);right:var(--pic-x);z-index:1;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent}
.player-frame[data-ui=hidden],.player-frame[data-ui=hidden] .pui-surface{cursor:none}
.player-frame::after{content:"";position:absolute;left:var(--pic-x);right:var(--pic-x);bottom:var(--pic-y);height:min(120px,var(--pic-h));z-index:1;pointer-events:none;border-radius:0 0 14px 14px;background:linear-gradient(transparent,rgba(0,0,0,.55));opacity:1;transition:opacity .6s ease}
.player-frame[data-ui=hidden]::after{opacity:0}
.pui-bar{position:absolute;z-index:3;left:50%;bottom:calc(var(--pic-y) + 14px);width:max(min(300px,calc(100% - 16px)),calc(var(--pic-w) - 28px));translate:-50% 0;display:flex;align-items:center;gap:8px;padding:5px 8px 5px 5px;border-radius:999px;background:rgba(12,12,12,.5);border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 40px rgba(0,0,0,.35);backdrop-filter:blur(20px) saturate(1.2);-webkit-backdrop-filter:blur(20px) saturate(1.2);color:#eee;font-size:10px;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.player-frame[data-ui=hidden] .pui-bar{opacity:0;transform:translateY(10px);pointer-events:none}
.pui-btn{position:relative;display:grid;place-items:center;flex:none;width:34px;height:34px;padding:0;border-radius:999px;color:#eee;transition:background-color .25s,color .25s,transform .35s cubic-bezier(.22,1,.36,1)}
.pui-btn:hover,.pui-btn:focus-visible{background:rgba(255,255,255,.12);color:#fff}
.pui-btn:active{transform:scale(.9)}
.pui-btn svg{width:18px;height:18px;display:block}
.pui-btn .i-play{transform:translateX(1px)}
.player-frame[data-paused=true] .i-pause,.player-frame[data-paused=false] .i-play{display:none}
.pui-time{flex:none;min-width:36px;color:#c8c8c8;font-size:10px;letter-spacing:.03em;text-align:center;font-variant-numeric:tabular-nums}
.pui-duration{color:#8a8a8a}
.pui-scrub{position:relative;flex:1;min-width:40px;height:30px;display:flex;align-items:center;cursor:pointer;touch-action:none;outline:none}
.pui-scrub:focus-visible .pui-track{box-shadow:0 0 0 3px rgba(255,255,255,.18)}
.pui-track{position:relative;width:100%;height:2px;border-radius:2px;background:rgba(255,255,255,.2);transition:height .3s cubic-bezier(.22,1,.36,1)}
.pui-scrub:hover .pui-track,.pui-scrub[data-dragging=true] .pui-track{height:4px}
.pui-buffered,.pui-played{position:absolute;inset:0;border-radius:inherit;transform-origin:left center;transform:scaleX(var(--p,0))}
.pui-buffered{background:rgba(255,255,255,.22)}
.pui-played{background:#f4f4f4}
.pui-knob{position:absolute;top:50%;left:calc(var(--p,0)*100%);width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.14);transform:scale(0);transition:transform .3s cubic-bezier(.22,1,.36,1)}
.pui-scrub:hover .pui-knob,.pui-scrub[data-dragging=true] .pui-knob,.pui-scrub:focus-visible .pui-knob{transform:scale(1)}
.pui-tip{position:absolute;bottom:calc(100% + 8px);left:calc(var(--h,0)*100%);padding:4px 7px;border-radius:6px;background:rgba(245,245,245,.94);color:#111;font-size:9px;font-variant-numeric:tabular-nums;transform:translateX(-50%) translateY(4px);opacity:0;pointer-events:none;transition:opacity .2s,transform .3s cubic-bezier(.22,1,.36,1);white-space:nowrap}
.pui-scrub:hover .pui-tip,.pui-scrub[data-dragging=true] .pui-tip{opacity:1;transform:translateX(-50%)}
.pui-sound{width:auto;display:inline-flex;align-items:center;gap:6px;padding:0 11px 0 8px;letter-spacing:.03em}
.pui-sound-label{font-size:9px;color:#bbb;white-space:nowrap}
.pui-sound[data-muted=true] .pui-sound-label{color:#fff}
.pui-sound[data-muted=true]::before{content:"";position:absolute;inset:0;border-radius:inherit;border:1px solid rgba(255,255,255,.28);animation:sound-ask 2.6s ease-in-out infinite}
@keyframes sound-ask{0%,100%{opacity:.25}50%{opacity:.9}}
.i-exit{display:none}
[data-full=true] .i-enter{display:none}
[data-full=true] .i-exit{display:inline}
.pui-center{position:absolute;z-index:2;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;display:grid;place-items:center;padding:0;border-radius:50%;color:#fff;background:rgba(14,14,14,.4);border:1px solid rgba(255,255,255,.16);box-shadow:0 18px 60px rgba(0,0,0,.4);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);opacity:0;transform:scale(.82);pointer-events:none;transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1),background-color .25s}
.pui-center svg{width:28px;height:28px}
.pui-center .i-play{transform:translateX(2px)}
.player-frame[data-paused=true] .pui-center{opacity:1;transform:scale(1);pointer-events:auto}
.pui-center:hover{background:rgba(40,40,40,.5)}
.pui-seek-flash{position:absolute;z-index:2;top:50%;width:84px;height:84px;margin-top:-42px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;font-size:11px;letter-spacing:.04em;opacity:0;pointer-events:none}
.pui-seek-flash[data-side=left]{left:12%}.pui-seek-flash[data-side=right]{right:12%}
.pui-seek-flash.is-on{animation:seek-flash .7s cubic-bezier(.22,1,.36,1)}
@keyframes seek-flash{0%{opacity:0;transform:scale(.8)}25%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.08)}}
.player-frame:fullscreen{border-radius:0;width:100vw;height:100vh}
.player-frame:-webkit-full-screen{border-radius:0;width:100vw;height:100vh}
.player-frame:fullscreen{background:#000}
.player-frame:fullscreen video{clip-path:none}
.player-frame:fullscreen .pui-bar{bottom:calc(var(--pic-y) + 24px);width:min(calc(var(--pic-w) - 48px),1100px)}

/* Credits open as a paragraph in place. */
.credits-toggle{display:inline-flex;align-items:center;gap:9px;flex:none;padding:8px 0;color:#bbb;font-size:10px;letter-spacing:.04em;transition:color .25s}
.credits-toggle:hover,.credits-toggle[aria-expanded=true]{color:#fff}
.credits-plus{position:relative;width:9px;height:9px;flex:none}
.credits-plus::before,.credits-plus::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;margin-top:-.5px;background:currentColor;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.credits-plus::after{transform:rotate(90deg)}
[aria-expanded=true] > .credits-plus::after{transform:rotate(180deg)}
[aria-expanded=true] > .credits-plus::before{transform:rotate(180deg)}
.credits-sheet{position:absolute;z-index:6;right:30px;bottom:68px;width:min(480px,calc(100% - 60px));max-height:min(48vh,440px);overflow:auto;overscroll-behavior:contain;padding:18px 20px 20px;border-radius:18px;background:rgba(10,10,10,.84);border:1px solid #272727;box-shadow:0 26px 80px rgba(0,0,0,.7);backdrop-filter:blur(26px) saturate(1.1);-webkit-backdrop-filter:blur(26px) saturate(1.1);color:#d8d8d8;font-size:11px;line-height:1.7;opacity:0;filter:blur(6px);transform:translateY(12px) scale(.985);transform-origin:right bottom;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),filter .55s cubic-bezier(.22,1,.36,1);scrollbar-width:thin;scrollbar-color:#444 transparent}
.credits-sheet[data-open=true]{opacity:1;filter:blur(0);transform:none}
.credits-title{display:flex;justify-content:space-between;gap:12px;margin:0 0 10px;color:#777;font-size:9px;letter-spacing:.1em;text-transform:uppercase}
.credits-paragraph{margin:0;color:#dcdcdc;text-wrap:pretty}
.credits-paragraph .role{color:#7c7c7c}
.credits-paragraph .credit{display:inline}
.credits-note{margin:10px 0 0;color:#777;font-size:10px}
.credits-sheet a{display:inline-block;margin-top:12px;color:#ccc;font-size:10px;text-decoration:underline;text-underline-offset:3px}
.credits-sheet a:hover{color:#fff}
.credits-section{margin:0 0 16px}
.credits-section h3{margin:0 0 7px;color:#aaa;font-size:10px;font-weight:400;letter-spacing:.06em;text-transform:uppercase}
.credits-section ul{margin:0;padding:0;list-style:none}
.credits-section li{margin:0 0 6px;color:#dcdcdc;line-height:1.55}
.credits-section li::before{content:'— ';color:#777}
.credits-section a,.credits-sheet .credits-section a,#credits-content .credits-section a{display:inline;margin:0;color:inherit;text-decoration:underline;text-decoration-color:#555;text-underline-offset:2px;font-size:inherit}

/* Swipe viewer for enlarged images */
.lightbox:not([open]){display:none}
.lightbox[open]{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;display:flex;flex-direction:column;overflow:hidden;color:#eee;background:rgba(0,0,0,var(--dim,.95));animation:lightbox-in .5s cubic-bezier(.22,1,.36,1)}
.lightbox::backdrop{background:transparent}
@keyframes lightbox-in{from{opacity:0}to{opacity:1}}
.lightbox[data-closing=true]{opacity:0;transition:opacity .32s ease}
.lightbox-head{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:32px;padding:max(16px,env(safe-area-inset-top)) 22px 8px;font-size:10px;color:#9a9a9a;letter-spacing:.04em;transition:opacity .3s}
.lightbox-head button{padding:8px 0;color:#ddd;font-size:10px}
.lightbox-head button:hover{color:#fff}
.lightbox-stage{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.lightbox-stage[data-dragging=true]{cursor:grabbing}
.lightbox-track{display:flex;height:100%;will-change:transform}
.lightbox-track.is-settling{transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.lightbox-slide{position:relative;flex:0 0 100%;height:100%;display:grid;place-items:center;padding:6px min(5vw,84px)}
.lightbox-slide img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:6px;-webkit-user-drag:none;user-select:none;pointer-events:none;opacity:0;transform:scale(.985);transition:opacity .45s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.lightbox-slide img.is-loaded{opacity:1;transform:none}
.lightbox-slide[data-current=false] img.is-loaded{opacity:.55;transform:scale(.96)}
.lightbox-track.is-dragging .lightbox-slide img.is-loaded{opacity:1;transform:none}
.lightbox-nav{position:absolute;z-index:2;top:50%;width:48px;height:48px;margin-top:-24px;display:grid;place-items:center;padding:0;border-radius:50%;color:#eee;background:rgba(22,22,22,.55);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:opacity .3s,background-color .25s,transform .35s cubic-bezier(.22,1,.36,1)}
.lightbox-nav:hover{background:rgba(60,60,60,.6)}
.lightbox-nav:active{transform:scale(.92)}
.lightbox-nav:disabled{opacity:0;pointer-events:none}
.lightbox-nav svg{width:20px;height:20px}
#lightbox-prev{left:20px}#lightbox-next{right:20px}
.lightbox-foot{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 20px max(18px,env(safe-area-inset-bottom));font-size:10px;color:#9a9a9a;letter-spacing:.06em;font-variant-numeric:tabular-nums;transition:opacity .3s}
.lightbox-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:80vw}
.lightbox-dots span{width:5px;height:5px;border-radius:50%;background:#3d3d3d;transition:background-color .3s,transform .4s cubic-bezier(.22,1,.36,1)}
.lightbox-dots span.is-active{background:#eee;transform:scale(1.3)}
.lightbox[data-pulling=true] .lightbox-head,.lightbox[data-pulling=true] .lightbox-foot,.lightbox[data-chrome=hidden] .lightbox-head,.lightbox[data-chrome=hidden] .lightbox-foot{opacity:0;pointer-events:none}
@media(pointer:coarse){.lightbox-nav{display:none}.lightbox-slide{padding:4px 0}}
.photo-grid figure{cursor:zoom-in}

/* Index: list or feed */
.index-head{align-items:center}
.view-switch{display:flex;gap:3px;width:max-content;margin:-8px 0 -8px auto;padding:3px;border:1px solid #262626;border-radius:999px}
.view-switch button{display:inline-flex;align-items:center;gap:8px;padding:7px 15px;border-radius:999px;color:#888;font-size:10px;letter-spacing:.05em;transition:background-color .3s,color .3s}
.view-switch button:hover{color:#fff}
.view-switch button[aria-pressed=true]{background:#1b1b1b;color:#eee}
.feed-glyph{position:relative;width:8px;height:11px;border:1px solid currentColor;border-radius:2px;opacity:.8}
.feed-glyph::after{content:"";position:absolute;left:1px;right:1px;top:3px;height:1px;background:currentColor;box-shadow:0 3px 0 currentColor}

/* Feed: every work, newest first, one at a time. */
.feed{position:fixed;inset:0;z-index:15;background:#000;color:#ddd;opacity:1;transition:opacity .55s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.2,.8,.2,1)}
.feed[data-opening=true],.feed[data-closing=true]{opacity:0;pointer-events:none}
.feed-head{position:absolute;z-index:4;top:0;left:0;right:0;display:flex;align-items:center;gap:14px;padding:max(18px,env(safe-area-inset-top)) 26px 18px;font-size:10px;letter-spacing:.08em;background:linear-gradient(rgba(0,0,0,.82),rgba(0,0,0,0));pointer-events:none}
.feed-head > *{pointer-events:auto}
.feed-count{color:#6f6f6f;letter-spacing:.08em;font-variant-numeric:tabular-nums;white-space:nowrap}
.feed-actions{display:flex;align-items:center;gap:18px;margin-left:auto}
.feed-actions > button:not(.pui-btn){padding:8px 0;color:#999;font-size:10px;letter-spacing:.04em;transition:color .25s;white-space:nowrap}
.feed-actions > button:not(.pui-btn):hover{color:#fff}
.feed-actions .pui-sound{display:none}
.feed-scroller{position:absolute;inset:0;overflow-x:hidden;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;outline:none}
.feed-scroller::-webkit-scrollbar{display:none}
.feed-item{position:relative;height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:16px;padding:66px max(26px,6vw) 76px;scroll-snap-align:start;scroll-snap-stop:always;touch-action:none;user-select:none;-webkit-user-select:none}
.feed-media{position:relative;min-height:0;border-radius:16px;overflow:hidden;background:#000;isolation:isolate;transform:translateZ(0)}
.feed-track{position:relative;z-index:1;display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none}
.feed-track::-webkit-scrollbar{display:none}
.feed-slide{position:relative;flex:0 0 100%;height:100%;display:grid;place-items:center;scroll-snap-align:center;scroll-snap-stop:always;overflow:hidden}
.feed-slide,.feed-info{touch-action:none;user-select:none;-webkit-user-select:none}
.feed-scroller[data-dragging=true],.feed-scroller[data-dragging=true] .feed-slide{cursor:grabbing}
.feed-slide[data-kind=film]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:28px 10px 10px}
.feed-picture{position:relative;flex:none;max-width:100%;overflow:hidden;border-radius:10px;background:#000}
.feed-picture video,.feed-picture .feed-poster{position:absolute;inset:0;display:block;width:100%;height:100%}
.feed-picture video{object-fit:contain;pointer-events:none}
.feed-slide[data-kind=image] > img{display:block;width:auto;height:auto;max-width:min(900px,100%);max-height:100%;object-fit:contain;opacity:0;transition:opacity .6s ease}
.feed-slide[data-kind=image] > img.is-loaded{opacity:1}
.feed-slide[data-kind=image]{cursor:zoom-in}
.feed-slide[data-kind=film]{cursor:pointer}
.feed-picture video{opacity:0;transition:opacity .5s ease}
.feed-picture video.is-live{opacity:1}
.feed-poster{object-fit:cover;pointer-events:none}
.feed-stills{position:relative;flex:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:8px;width:min(880px,100%);min-height:82px;padding-bottom:15px}
.feed-still{display:block;width:100%;padding:0;aspect-ratio:16/9;overflow:hidden;border-radius:5px;background:#111}
.feed-still img{display:block;width:100%;height:100%;object-fit:cover}
.feed-still:hover img,.feed-still:focus-visible img{filter:brightness(1.18)}
.feed-stills-count{position:absolute;bottom:0;left:0;color:#777;font-size:9px;letter-spacing:.05em}
.feed-video-controls{position:absolute;z-index:4;right:9px;bottom:10px;display:flex;gap:6px}
.feed-video-control{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid rgba(255,255,255,.17);border-radius:50%;color:#eee;background:rgba(0,0,0,.62);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.feed-video-control svg{width:17px;height:17px}
.feed-video-sound[data-muted=true] .i-wave,.feed-video-sound[data-muted=false] .i-mute{display:none}
.feed-video-control:hover{background:rgba(35,35,35,.9)}
.feed-state{position:absolute;z-index:3;left:50%;top:50%;width:66px;height:66px;margin:-33px 0 0 -33px;display:grid;place-items:center;border-radius:50%;color:#fff;background:rgba(14,14,14,.42);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;transform:scale(.8);pointer-events:none;transition:opacity .35s cubic-bezier(.22,1,.36,1),transform .55s cubic-bezier(.22,1,.36,1)}
.feed-state svg{width:24px;height:24px;transform:translateX(2px)}
.feed-slide[data-paused=true] .feed-state{opacity:1;transform:scale(1)}
.feed-progress{position:absolute;z-index:3;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.12);opacity:0;transition:opacity .4s}
.feed-slide.is-active .feed-progress{opacity:1}
.feed-progress span{display:block;height:100%;background:#eee;transform-origin:left center;transform:scaleX(var(--p,0))}
.feed-slide-label{position:absolute;z-index:3;top:12px;left:12px;max-width:calc(100% - 24px);padding:6px 10px;border-radius:999px;background:rgba(0,0,0,.45);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#cfcfcf;font-size:9px;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feed-dots{position:absolute;z-index:3;left:50%;bottom:14px;display:flex;gap:5px;padding:6px 9px;border-radius:999px;background:rgba(0,0,0,.4);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transform:translateX(-50%);pointer-events:none}
.feed-dots span{width:4px;height:4px;border-radius:50%;background:#5e5e5e;transition:background-color .3s,transform .4s cubic-bezier(.22,1,.36,1)}
.feed-dots span.is-active{background:#fff;transform:scale(1.35)}
.feed-arrow{position:absolute;z-index:3;top:50%;width:40px;height:40px;margin-top:-20px;display:grid;place-items:center;border-radius:50%;color:#eee;background:rgba(18,18,18,.55);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transition:opacity .3s}
.feed-arrow svg{width:18px;height:18px}
.feed-arrow[data-dir=prev]{left:12px}.feed-arrow[data-dir=next]{right:12px}
.feed-media:hover .feed-arrow:not(:disabled){opacity:1}
.feed-arrow:disabled{opacity:0!important;pointer-events:none}
.feed-info{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px 22px;opacity:.4;transform:translateY(6px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
.feed-item.is-active .feed-info{opacity:1;transform:none}
.feed-meta{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 12px;color:#777;font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.feed-title{margin:0;font-size:14px;font-weight:400;letter-spacing:.02em;color:#eee;line-height:1.3}
.feed-title span{display:block;margin-top:4px;color:#8a8a8a;font-size:10px;letter-spacing:.04em}
.feed-buttons{display:flex;align-items:center;gap:20px}
.feed-open{padding:8px 0;color:#bbb;font-size:10px;letter-spacing:.04em;transition:color .25s}
.feed-open:hover{color:#fff}
.feed-open span{display:inline-block;margin-left:6px;transition:transform .45s cubic-bezier(.22,1,.36,1)}
.feed-open:hover span{transform:translate(3px,-3px)}
.feed-media .credits-sheet{left:14px;right:auto;bottom:14px;width:min(520px,calc(100% - 28px));max-height:calc(100% - 28px);transform-origin:left bottom}
.feed-steps{position:absolute;z-index:4;right:22px;top:50%;display:flex;flex-direction:column;gap:8px;transform:translateY(-50%)}
.feed-steps button{width:38px;height:38px;display:grid;place-items:center;padding:0;border-radius:50%;color:#ddd;background:rgba(16,16,16,.6);border:1px solid #242424;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:opacity .3s,background-color .25s}
.feed-steps button:hover{background:#222}
.feed-steps button:disabled{opacity:.2;pointer-events:none}
.feed-steps svg{width:18px;height:18px}
@media(min-width:901px) and (min-height:501px){
 .feed-slide[data-kind=film]{gap:12px;padding:4px 10px}
 .feed-stills{height:clamp(60px,9vh,112px);min-height:0;grid-template-rows:minmax(0,1fr)}
 .feed-still{height:100%;aspect-ratio:auto}
}
@media(pointer:coarse),(max-width:900px){
 .feed-steps,.feed-arrow{display:none}
 .feed-head{padding:max(14px,env(safe-area-inset-top)) 16px 14px;gap:10px}
 .feed-actions{gap:8px}
 .feed-item{padding:max(58px,calc(env(safe-area-inset-top) + 46px)) 10px max(70px,calc(env(safe-area-inset-bottom) + 55px));gap:12px}
 .feed-media{border-radius:12px}
 .feed-slide[data-kind=film]{gap:12px;padding:28px 8px 8px}
 .feed-stills{gap:5px;min-height:54px}
 .feed-video-control{width:31px;height:31px}
 .feed-info{gap:6px 14px;padding:0 6px}
 .feed-title{font-size:13px}
 .credits-sheet{left:16px;right:16px;bottom:64px;width:auto}
 .feed-media .credits-sheet{left:10px;right:10px;bottom:10px;width:auto}
 .pui-bar{bottom:calc(var(--pic-y) + 8px);width:max(min(300px,calc(100% - 8px)),calc(var(--pic-w) - 16px));gap:4px;padding:4px 6px 4px 4px}
 .pui-btn{width:32px;height:32px}
 .pui-time{min-width:30px;font-size:9px}
 .pui-duration{display:none}
 .pui-sound-label{display:none}
 .pui-sound{padding:0;width:32px;justify-content:center}
 .index-sub{display:none}
}
@media(prefers-reduced-motion:reduce){.pui-sound::before{animation:none}.lightbox[open]{animation:none}}
@media(max-width:350px){.feed-head{gap:6px}.feed-actions{gap:6px}.feed-view-switch button{padding-inline:11px}}

/* Short phone screens keep the film large and all navigation within reach. */
@media(orientation:landscape) and (max-height:500px){
 .player{padding:10px max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left))}
 .player-head{display:flex;align-items:center;min-height:42px;gap:16px;padding-bottom:8px}
 .player-head h2{margin:2px 0 0;max-width:48vw}
 .player-head > div:first-child{min-width:0}
 .player-actions{margin-left:auto;gap:18px}
 .player-head #player-mark{margin-left:auto}
 .project-strip-label{margin:6px 0 2px;font-size:8px}
 .project-stills{min-height:50px;padding:2px 0;gap:7px}
 .project-stills button{flex:0 0 88px}
 .project-stills img{height:48px}
 .project-clips{min-height:65px;gap:7px}
 .project-clips button{width:88px}
 .project-clips img{height:44px}
 .player-foot{min-height:28px;padding-top:6px}
 .feed-slide[data-kind=film]{flex-direction:row;gap:16px;padding:26px 14px 8px}
 .feed-stills{grid-template-columns:repeat(2,minmax(0,1fr));width:clamp(120px,24vw,180px);min-height:0;gap:6px;flex-shrink:0;padding-bottom:14px}
}

#about{width:min(760px,calc(100vw - 24px))}
.about-content{padding-bottom:20px}
.about-intro{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:30px;align-items:end}
.about-portrait{margin:0;aspect-ratio:3/4;overflow:hidden;background:#d9d9d7}
.about-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}
.about-bio{padding-bottom:5px;color:#d9d9d7}
.about-bio h2,.about-contacts h2{font-size:clamp(16px,2vw,22px);font-weight:400;letter-spacing:-.03em}
.about-bio h2{margin:0 0 25px}
.about-bio p{font-size:12px;line-height:1.65;margin:0 0 18px}
.about-contacts{margin-top:42px}
.about-contacts h2{margin:0 0 20px}
.about-contact{display:grid;grid-template-columns:1fr 1.2fr;gap:18px;padding:16px 0;border-top:1px solid #363636;font-size:11px;line-height:1.55}
.about-contact>span{color:#9b9b9b}
.about-contact a,.about-reach a{color:#e8e8e6;text-decoration:none;overflow-wrap:anywhere}
.about-contact a span,.about-reach a span{display:inline-block;margin-left:6px}
.about-contact a:hover,.about-reach a:hover{text-decoration:underline;text-underline-offset:4px}
.about-reach{margin-top:38px;padding:23px;border:1px solid #4b4b4b;color:#e4e4e2}
.about-reach>p{font-size:16px;line-height:1.4;margin:0 0 26px}
.about-bio a{color:inherit;text-decoration:none;border-bottom:1px solid #5b5b5b}
.about-bio a:hover{border-color:#e8e8e6}
.about-bio a span{display:inline-block;margin-left:5px}
.reach-form label em{font-style:normal;color:#6f6f6f}
.reach-form{display:grid;gap:16px}
.reach-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.reach-form label{display:grid;gap:7px;color:#aaa;font-size:10px}
.reach-form input,.reach-form textarea{display:block;width:100%;padding:12px;border:1px solid #5b5b5b;border-radius:0;outline:none;background:transparent;color:#f0f0ee;font:inherit;font-size:12px;line-height:1.5}
.reach-form input:focus,.reach-form textarea:focus{border-color:#ddd}
.reach-form textarea{resize:vertical;min-height:112px}
.reach-honeypot{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
.reach-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.reach-actions button{padding:11px 14px;border:1px solid #8d8d8d;color:#e8e8e6;font-size:11px}
.reach-actions button:hover{background:#e8e8e6;color:#111}
.reach-actions button:disabled{opacity:.5;cursor:wait}
.reach-status{min-height:1.4em;margin:0!important;font-size:11px!important;color:#dededc}
.reach-owner-access{display:block;width:max-content;margin:2px 0 0 auto;font-size:9px;color:#696969!important;text-decoration:none!important;line-height:1.5}
.reach-owner-access:hover,.reach-owner-access:focus-visible{color:#bdbdbd!important;text-decoration:underline!important}
@media(max-width:430px){.reach-fields{grid-template-columns:1fr}}
@media(max-width:600px){.about-intro{grid-template-columns:1fr;gap:24px}.about-portrait{max-height:54dvh;aspect-ratio:3/4}.about-bio h2{margin-bottom:16px}.about-contact{grid-template-columns:1fr;gap:6px}.about-contacts{margin-top:30px}}

/* One Index / Feed switch, pinned above both views so it never sits under list rows or feed media,
   stays put during the crossfade and keeps the same place in both arrangements. The per-view switches
   stay in the markup only as spacers. */
.index-head{z-index:3}
#index.panel{padding-top:0}
#index .index-head{top:0}
#index .index-head .view-switch{visibility:hidden;margin-left:auto}
#index .index-head{gap:12px}
.feed-view-switch{display:none}
.view-float{position:fixed;z-index:17;top:var(--vf-top,15px);left:var(--vf-left,309px);margin:0;background:rgba(8,8,8,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:1;transition:opacity .42s cubic-bezier(.22,1,.36,1)}
.view-float[data-hiding=true]{opacity:0;pointer-events:none}
.view-float[hidden]{display:none}
.view-float button{touch-action:manipulation}
#index-close{white-space:nowrap}
@media(max-width:350px){.view-float button,#index .index-head .view-switch button{padding-inline:8px;gap:6px}.view-float,#index .index-head .view-switch{gap:2px}}
@media(max-width:350px){.feed-count{display:none}}

/* Closed schoolbook: the page block and spine read as the worn card, not as a pale box around it. */
/* Closed-book edges and shadow ease into the open look while the cover swings (no switch on its first frame). */
.dbk-edge{transition:filter .9s cubic-bezier(.45,0,.25,1)}
.dbk-shadow{transition:box-shadow .9s cubic-bezier(.45,0,.25,1),border-radius .9s cubic-bezier(.45,0,.25,1)}
#diary-book[data-closed=true] .dbk-edge{filter:brightness(.55) saturate(.8)}
#diary-book[data-closed=true] .dbk-shadow{border-radius:3.2%/2.4%;box-shadow:2px 4px 8px 0 rgba(0,0,0,.5),10px 16px 34px 4px rgba(0,0,0,.5),26px 42px 96px 18px rgba(0,0,0,.45)}
/* Living oval (see the Diary code): the loop sits exactly over the printed oval, feathered into its vignette. */
.dbk-face video.dbk-oval{position:absolute;left:4.12%;top:4.874%;width:91.87%;height:89.36%;object-fit:fill;background:none;opacity:0;transition:opacity .25s linear;
 -webkit-mask-image:radial-gradient(41.8% 47.3% at 50.9% 50.9%,#000 80%,rgba(0,0,0,0) 98%);mask-image:radial-gradient(41.8% 47.3% at 50.9% 50.9%,#000 80%,rgba(0,0,0,0) 98%);pointer-events:none}
.dbk-face video.dbk-oval[data-on=true]{opacity:1;transition:opacity 1.6s cubic-bezier(.45,0,.25,1)}
@media(prefers-reduced-motion:reduce){.dbk-oval{display:none!important}}
