/* -----------------------------------------------------------------------
   EDITORIAL PORTFOLIO / STYLES
   Most design choices can be changed without editing CSS:
   owner dashboard > Appearance & Content. This file is for deeper changes.
   ----------------------------------------------------------------------- */
:root{--ink:#101010;--paper:#f2f0eb;--soft:#e8e5df;--muted:#8f8b85;--display:'Archivo',Arial,sans-serif;--body:'DM Sans',Arial,sans-serif;--serif:'Instrument Serif',Georgia,serif}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
button,input,textarea,select{font:inherit}
button,a{ -webkit-tap-highlight-color:transparent }
button{cursor:pointer}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid #527fc0;outline-offset:4px}

/* BLACK / CREAM / GRAPHITE THEMES */
.portfolio-body{--hero-bg:#090909;--hero-ink:#f8f6f2;--work-bg:#f2f0ec;--work-ink:#101010;--about-bg:#111111;--about-ink:#f4f1eb;--contact-bg:#ebe8e2;--contact-ink:#151515;background:var(--hero-bg);color:var(--hero-ink)}
.portfolio-body[data-theme="paper"]{--hero-bg:#f0ede6;--hero-ink:#171717;--work-bg:#fbfaf7;--work-ink:#151515;--about-bg:#ddd8cf;--about-ink:#141414;--contact-bg:#141414;--contact-ink:#f7f4ee}
.portfolio-body[data-theme="slate"]{--hero-bg:#202326;--hero-ink:#f0f1f1;--work-bg:#e4e5e5;--work-ink:#181b1d;--about-bg:#2c3034;--about-ink:#f2f3f4;--contact-bg:#d5d8db;--contact-ink:#181b1d}
.portfolio-body[data-type="serif"] .hero-title,.portfolio-body[data-type="serif"] .section-heading h2,.portfolio-body[data-type="serif"] .about-copy h2,.portfolio-body[data-type="serif"] .contact-layout h2{font-family:var(--serif);font-weight:400;letter-spacing:-.045em}
.portfolio-body[data-type="serif"] .section-heading h2 em,.portfolio-body[data-type="serif"] .about-copy h2 em,.portfolio-body[data-type="serif"] .contact-layout h2 em{font-style:italic}

/* NAV */
.site-header{height:92px;background:var(--hero-bg,#111);color:var(--hero-ink,#fff);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,4.4vw,88px);position:relative;z-index:5;border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}
.wordmark{display:flex;flex-direction:column;gap:5px;max-width:35%;line-height:1}
.wordmark>span{font-family:var(--display);font-weight:800;letter-spacing:-.05em;font-size:21px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wordmark small{font-size:9px;letter-spacing:.24em;font-weight:600;opacity:.67}
.nav-links{display:flex;gap:clamp(22px,3.4vw,66px)}
.nav-links a,.header-email{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.nav-links a{opacity:.68;transition:opacity .2s}
.nav-links a:hover{opacity:1}
.nav-links sup{font-size:8px;vertical-align:top;margin-left:1px;opacity:.5}
.header-email{border-bottom:1px solid currentColor;padding-bottom:7px}
.header-email span{margin-left:12px;font-size:15px}

/* HERO */
.hero{min-height:735px;min-height:min(850px,calc(100svh - 92px));height:auto;background:var(--hero-bg);color:var(--hero-ink);padding:0 clamp(24px,4.4vw,88px);display:grid;grid-template-rows:auto minmax(480px,1fr) auto}
.hero-topline,.hero-bottomline,.section-topline,.about-endline{display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}
.hero-topline{padding-top:26px;opacity:.68}
.hero-bottomline{border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);padding:24px 0 32px;align-items:end}
.hero-tagline{font-family:var(--body);text-transform:none;letter-spacing:0;line-height:1.5;font-weight:400;font-size:14px;max-width:335px;margin:0;opacity:.78}
.hero-scroll{white-space:nowrap}.hero-scroll span{font-size:18px;margin-left:14px}
.hero-stage{position:relative;min-height:480px;display:flex;align-items:center;justify-content:center;isolation:isolate;padding:22px 0 32px}
.hero-visual{width:min(36vw,455px);height:min(60vh,550px);min-width:255px;min-height:350px;background-position:center;background-size:cover;background-color:#3a3b3a;position:relative;z-index:-1;filter:grayscale(1);transition:filter .3s}
[data-image-treatment="color"] .hero-visual{filter:none}
.hero-visual::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.28),transparent 35%)}
.hero-texture{position:absolute;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(ellipse 28% 62% at 50% 50%,rgba(255,255,255,.03),transparent)}
.hero-title{position:absolute;inset:50% 0 auto;transform:translateY(-50%);margin:0;display:flex;flex-direction:column;font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:-.09em;line-height:.9;font-size:clamp(61px,11vw,190px);color:var(--hero-ink);text-shadow:0 0 1px rgba(0,0,0,.05);pointer-events:none}
.hero-title span{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:clip}
.hero-title span:first-child{text-align:left}
.hero-title span:nth-child(2){text-align:right;padding-right:.04em}
.hero-photo-caption{position:absolute;bottom:40px;left:calc(50% - min(18vw,227.5px) + 13px);width:calc(min(36vw,455px) - 26px);display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:.08em;font-weight:600;text-transform:uppercase;color:#fff;z-index:1}
.hero-aside{position:absolute;right:0;top:48%;font-size:9px;letter-spacing:.14em;writing-mode:vertical-rl;opacity:.7}

/* PORTFOLIO / GALLERY */
.portfolio-section{background:var(--work-bg);color:var(--work-ink);padding:40px clamp(24px,4.4vw,88px) 115px;scroll-margin-top:0}
.section-topline{padding:0 0 20px;border-bottom:1px solid color-mix(in srgb,currentColor 28%,transparent);opacity:.85}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin:70px 0 54px}
.section-heading h2{font-family:var(--display);font-size:clamp(65px,9.6vw,151px);font-weight:800;letter-spacing:-.09em;line-height:.88;text-transform:uppercase;margin:0;max-width:900px}
.section-heading h2 em{font-style:normal;font-weight:400;letter-spacing:-.095em}
.section-heading>p{font-size:14px;line-height:1.6;max-width:240px;margin:0 0 5px;color:color-mix(in srgb,var(--work-ink) 65%,transparent)}
.filter-bar{border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;margin-bottom:30px}
.filters,.subfilters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.filter{border:1px solid transparent;border-radius:0;padding:11px 17px;font-size:11px;letter-spacing:.06em;font-weight:600;background:transparent;color:inherit;transition:background .2s,color .2s}
.filter:hover{border-color:color-mix(in srgb,currentColor 25%,transparent)}
.filter.active{background:var(--work-ink);color:var(--work-bg);border-color:var(--work-ink)}
.photo-count{font-size:10px;letter-spacing:.1em;white-space:nowrap}
.subfilter-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:0 0 32px}
.subfilter-label{font-size:10px;font-weight:700;letter-spacing:.1em}
.subfilter{font-size:10px;padding:9px 12px;border:1px solid color-mix(in srgb,currentColor 20%,transparent)}
.gallery{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(15px,3vw,45px);row-gap:clamp(54px,7vw,110px)}
.photo-card{min-width:0;grid-column:span 6}
.gallery .photo-card:nth-child(4n + 1){grid-column:span 7}
.gallery .photo-card:nth-child(4n + 2){grid-column:span 5;margin-top:100px}
.gallery .photo-card:nth-child(4n + 3){grid-column:span 5;margin-left:8%}
.gallery .photo-card:nth-child(4n + 4){grid-column:span 7;margin-top:90px}
.photo-frame{display:block;border:0;background:#d7d5d0;width:100%;overflow:hidden;padding:0;position:relative;aspect-ratio:4/4.5;cursor:zoom-in}
.gallery .photo-card:nth-child(4n + 1) .photo-frame{aspect-ratio:1.2}
.gallery .photo-card:nth-child(4n + 2) .photo-frame{aspect-ratio:.77}
.gallery .photo-card:nth-child(4n + 3) .photo-frame{aspect-ratio:.79}
.gallery .photo-card:nth-child(4n + 4) .photo-frame{aspect-ratio:1.25}
.photo-frame img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .65s cubic-bezier(.2,.8,.2,1),filter .4s}
.photo-frame:hover img{transform:scale(1.045)}
.photo-overlay{position:absolute;bottom:17px;right:17px;display:grid;place-items:center;width:43px;height:43px;background:var(--paper);color:#111;font-size:24px;opacity:0;transform:translateY(5px);transition:opacity .2s,transform .2s}
.photo-frame:hover .photo-overlay,.photo-frame:focus-visible .photo-overlay{opacity:1;transform:none}
.photo-meta{display:flex;justify-content:space-between;align-items:baseline;gap:15px;margin-top:14px;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);padding-top:12px}
.photo-meta strong{font-size:14px;font-weight:600;letter-spacing:-.02em}
.photo-meta span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;text-align:right;opacity:.67}
.portfolio-body[data-layout="grid"] .gallery{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:22px;row-gap:50px}
.portfolio-body[data-layout="grid"] .gallery .photo-card{grid-column:auto;margin:0}
.portfolio-body[data-layout="grid"] .gallery .photo-frame{aspect-ratio:4/5}
.empty-gallery{grid-column:1 / -1;min-height:280px;display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid color-mix(in srgb,currentColor 20%,transparent);gap:12px;text-align:center;padding:20px}
.empty-gallery strong{font-family:var(--display);font-size:28px;letter-spacing:-.05em}
.empty-gallery span{font-size:14px;color:var(--muted)}
.gallery-footnote{display:flex;align-items:center;gap:12px;margin:80px 0 0;font-size:12px;opacity:.68}
.gallery-footnote span{font-size:23px}
.portfolio-section>.muted-note{display:block;margin:0 0 25px;font-size:11px;opacity:.55}

/* ABOUT */
.statement-section{background:var(--about-bg);color:var(--about-ink);padding:40px clamp(24px,4.4vw,88px) 32px}
.about-layout{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);gap:clamp(45px,7vw,125px);padding:95px 0 90px;align-items:center}
.about-image{background:#303236;aspect-ratio:4/5;max-height:640px;position:relative;background-size:cover;background-position:center;filter:grayscale(1)}
.about-image-label{position:absolute;bottom:18px;left:20px;color:#fff;font-size:9px;font-weight:600;letter-spacing:.12em}
.about-eyebrow{font-size:10px;letter-spacing:.14em;opacity:.68}
.about-copy h2{font-family:var(--display);font-size:clamp(51px,6.2vw,110px);font-weight:800;letter-spacing:-.085em;line-height:.94;margin:25px 0 32px;text-transform:uppercase}
.about-copy h2 span,.about-copy h2 em{display:block}
.about-copy h2 em{font-family:var(--serif);font-weight:400;font-style:italic;letter-spacing:-.035em;text-transform:none;font-size:.91em;margin-top:7px}
.about-copy p{font-size:15px;line-height:1.8;max-width:400px;opacity:.72;margin-bottom:36px}
.inline-arrow{border-bottom:1px solid currentColor;padding-bottom:8px;font-size:11px;letter-spacing:.1em;font-weight:600}
.inline-arrow span{margin-left:40px;font-size:15px}
.about-endline{border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);padding-top:21px;opacity:.7}
.about-endline span:last-child{font-size:22px}

/* CONTACT */
.contact-section{background:var(--contact-bg);color:var(--contact-ink);padding:40px clamp(24px,4.4vw,88px) 110px}
.contact-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(230px,1fr);gap:80px;padding-top:100px;align-items:end}
.contact-layout h2{font-family:var(--display);font-weight:800;font-size:clamp(67px,9vw,150px);letter-spacing:-.09em;line-height:.92;text-transform:uppercase;margin:0 0 25px}
.contact-layout h2 span,.contact-layout h2 em{display:block}
.contact-layout h2 em{font-weight:400;font-style:normal}
.contact-layout p{font-size:14px;line-height:1.6;max-width:420px;opacity:.7;margin:0 0 35px}
.contact-action,.dark-button{background:var(--contact-ink,#131313);color:var(--contact-bg,#fff);border:1px solid var(--contact-ink,#131313);font-size:11px;letter-spacing:.08em;font-weight:700;padding:19px 22px;display:inline-flex;align-items:center;gap:45px;text-align:left}
.contact-action:hover{opacity:.76}
.contact-action span{font-size:19px}
.contact-aside{border-top:1px solid currentColor;padding-top:20px;display:flex;flex-direction:column;align-items:flex-start;gap:16px;position:relative;min-height:290px}
.contact-aside>span:first-child{font-size:10px;letter-spacing:.1em;opacity:.65;margin-bottom:10px}
.contact-aside a{font-size:14px;border-bottom:1px solid transparent;overflow-wrap:anywhere}
.contact-aside a:hover{border-color:currentColor}
.contact-arrow{font-family:var(--display);font-size:clamp(75px,12vw,190px);line-height:1;position:absolute;bottom:-22px;right:0;opacity:.9}
.site-footer{background:var(--hero-bg);color:var(--hero-ink);padding:28px clamp(24px,4.4vw,88px);display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:10px;letter-spacing:.08em}
.site-footer .footer-brand{font-family:var(--display);font-size:19px;font-weight:800;letter-spacing:-.05em;text-transform:uppercase}
.site-footer>span{opacity:.5}
.site-footer>div{display:flex;gap:24px}
.site-footer>div a{opacity:.65}
.site-footer>div a:hover{opacity:1}

/* DIALOGS */
dialog{border:0;padding:0;color:#151515;background:#f3f0ea;max-height:calc(100dvh - 36px);max-width:calc(100vw - 30px);box-shadow:0 24px 120px #0006}
dialog::backdrop{background:rgba(0,0,0,.83);backdrop-filter:blur(4px)}
.dialog-close{position:absolute;right:14px;top:14px;width:42px;height:42px;border:0;border-radius:0;background:#f8f6f0;color:#111;font-size:29px;z-index:3;line-height:1}
.photo-dialog{width:min(1120px,100%)}
.photo-dialog-grid{display:grid;grid-template-columns:60% 40%;min-height:530px}
.photo-dialog-image-wrap{background:#151515;min-height:530px;display:flex;justify-content:center;align-items:center}
.photo-dialog-image-wrap img{display:block;width:100%;max-height:calc(100dvh - 50px);object-fit:contain}
.photo-dialog-info{padding:74px 44px 35px;display:flex;flex-direction:column;align-items:start}
.section-kicker{font-size:10px;letter-spacing:.14em;font-weight:700;color:#666;display:block;margin:0}
.photo-dialog-info h3,.request-dialog h3{font-family:var(--display);font-size:clamp(35px,4vw,60px);line-height:1;letter-spacing:-.07em;text-transform:uppercase;margin:18px 0}
.photo-dialog-info>p:not(.section-kicker){font-size:13px;line-height:1.75;color:#777}
.dialog-divider{height:1px;background:#cecbc5;width:100%;margin:auto 0 26px}
.permission-label{font-size:10px;font-weight:700;letter-spacing:.07em}
.photo-dialog-info .dialog-explainer{margin:12px 0 20px}
.dark-button{background:#151515;color:#fff;border-color:#151515;justify-content:space-between;gap:22px}
.dark-button:hover{background:#353535}
.photo-dialog-info .dark-button{width:100%}
.muted-note{font-size:11px;color:#888;margin:13px 0 0}
.request-dialog{width:min(650px,100%);padding:48px 45px 40px;overflow-y:auto}
.request-intro{font-size:14px;line-height:1.7;color:#666;margin:0 0 25px}
.request-form,.request-form label{display:flex;flex-direction:column}
.request-form{gap:18px}
.request-form label{gap:8px;font-size:10px;letter-spacing:.07em;font-weight:700}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.request-form input,.request-form select,.request-form textarea{padding:14px;background:#fff;border:1px solid #d3cfc7;min-width:0;font-size:14px;letter-spacing:0;font-weight:400}
.request-form textarea{resize:vertical}
.request-form .dark-button{align-self:start}
.form-status{font-size:12px;line-height:1.6;margin:0}
.form-status.error{color:#b0352d}.form-status.success{color:#367151}
.form-privacy{font-size:11px;color:#777;line-height:1.6;margin:0}

/* ADMIN DASHBOARD */
.admin-body{--hero-bg:#111;--hero-ink:#f8f7f3;background:#f0eee9;color:#141414}
.admin-header{background:#111;color:#fff}
.admin-link{font-size:11px;letter-spacing:.08em;font-weight:700}
.admin-shell{max-width:1220px;margin:0 auto;padding:65px 26px 120px}
.admin-intro{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:40px}
.admin-intro h1{font-family:var(--display);font-size:clamp(52px,7.4vw,106px);font-weight:800;letter-spacing:-.09em;line-height:.94;margin:16px 0}
.admin-intro h1 em,.settings-intro h2 em{font-family:var(--serif);font-weight:400;letter-spacing:-.02em}
.admin-intro p{font-size:14px;line-height:1.7;max-width:530px;color:#696661}
.outline-button{border:1px solid #1b1b1b;color:#1b1b1b;background:transparent;padding:14px 18px;font-size:11px;font-weight:700;letter-spacing:.07em;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.outline-button:hover{background:#151515;color:#fff}
.admin-card{border:1px solid #dcd8d1;background:#fff;padding:clamp(22px,3vw,42px);margin-bottom:20px}
.admin-card h2,.settings-intro h2{font-family:var(--display);font-size:clamp(29px,3vw,45px);font-weight:800;letter-spacing:-.065em;line-height:1.05;margin:13px 0 20px}
.admin-card p,.settings-intro p{font-size:13px;line-height:1.7;color:#66635e}
.login-card{max-width:580px}
.admin-form,.settings-form label:not(.settings-toggle){display:grid;gap:10px}
.admin-form{gap:19px}
.admin-form label,.settings-form label{font-size:10px;letter-spacing:.08em;font-weight:700}
.admin-form input,.admin-form select,.admin-form textarea,.settings-form input:not([type=checkbox]),.settings-form select,.settings-form textarea{width:100%;min-width:0;background:#faf9f6;border:1px solid #d5d0c8;color:#151515;padding:13px 14px;letter-spacing:0;font-size:14px;font-weight:400;border-radius:0}
.admin-form textarea,.settings-form textarea{resize:vertical}
.admin-form input[type=file]{padding:12px}
.admin-form .dark-button{justify-self:start}
.admin-tabs{display:flex;gap:5px;flex-wrap:wrap;border-bottom:1px solid #c9c4bb;margin:0 0 25px}
.admin-tab{border:0;border-bottom:2px solid transparent;background:none;color:#77716a;padding:17px 23px 15px;font-size:12px;letter-spacing:.02em;font-weight:700}
.admin-tab.active{border-color:#141414;color:#141414}
.admin-tab:hover{color:#141414}
.admin-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.8fr);gap:20px}
.admin-help strong{font-family:var(--display);color:#151515;font-size:14px;margin-right:12px}
.admin-help p{padding:15px 0;border-bottom:1px solid #e8e4dc;margin:0}
.info-callout{background:#f0eee8;padding:17px;margin-top:26px;color:#5e5a55;font-size:12px;line-height:1.7}
.admin-list{display:grid;gap:14px;margin-top:24px}
.admin-photo{display:flex;align-items:center;gap:18px;border:1px solid #e1ddd7;background:#fff;padding:13px}
.admin-photo img{width:90px;height:96px;object-fit:cover;background:#ddd}
.admin-photo-info{flex:1;min-width:0}
.admin-photo-info strong{display:block;font-size:14px}
.admin-photo-info small{font-size:11px;color:#777;margin-top:4px;display:block}
.admin-photo>button{color:#9a3929;background:transparent;border:0;font-size:10px;font-weight:800;letter-spacing:.06em}
.photo-edit-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:13px}
.photo-edit-controls input,.photo-edit-controls select{border:1px solid #d6d1ca;background:#faf9f6;padding:10px;max-width:230px;min-width:140px;font-size:12px;flex:1}
.photo-edit-controls button{background:#151515;border:1px solid #151515;color:#fff;padding:11px 14px;font-weight:700;font-size:10px;white-space:nowrap}
.photo-edit-status{display:block;font-size:11px;color:#90694d;margin-top:8px}
.field-hint{display:block;font-size:11px;color:#77736d;letter-spacing:0;font-weight:400;line-height:1.55;margin-top:5px}
.request-item{padding:20px;border:1px solid #e3dfd8;overflow-wrap:anywhere}
.request-item-head{display:flex;align-items:start;justify-content:space-between;gap:22px}
.request-item strong{font-size:14px}
.request-item small{display:block;margin-top:6px;font-size:11px;color:#7a756f}
.request-item p{white-space:pre-wrap;overflow-wrap:anywhere;color:#494542;margin:14px 0;font-size:13px}
.status-pill{text-transform:uppercase;font-weight:800;letter-spacing:.07em;font-size:10px!important}
.request-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.request-actions button,.request-actions a{background:#151515;color:#fff;border:0;padding:12px 14px;font-size:10px;font-weight:700;display:inline-flex;align-items:center;text-align:left}
.request-actions button.secondary,.request-actions a.secondary{background:#e8e5de;color:#151515}
.request-actions button.danger{background:#995546}
.approval-result{border-top:1px solid #ded9d0;margin-top:18px;padding-top:18px;overflow-wrap:anywhere}
.approval-result code{background:#f4f1ec;padding:12px;font-size:11px;display:block;overflow-wrap:anywhere}
.setting-warning{border:1px solid #dcbd8c;background:#fff7e6;padding:20px;color:#75512b;font-size:13px;line-height:1.7;margin:20px 0}
#refresh-requests{margin-bottom:8px}
/* Website editor */
.settings-intro{display:flex;align-items:end;justify-content:space-between;gap:28px;margin:20px 0 25px}
.settings-intro h2{font-size:clamp(42px,5.5vw,76px);margin:12px 0 8px}
.settings-intro p{max-width:570px;margin-bottom:0}
.settings-form .admin-card{margin-bottom:16px}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px 20px;margin-top:23px}
.settings-grid label{display:flex;flex-direction:column;gap:10px}
.settings-grid .settings-wide{grid-column:1/-1}
.settings-toggle{display:flex;align-items:center;gap:11px;padding:4px 0 18px;letter-spacing:0!important;text-transform:none;font-size:13px!important}
.settings-toggle input{accent-color:#141414;width:17px;height:17px}
.settings-save-bar{background:#e5e1d9;border:1px solid #d5cfc6;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;position:sticky;bottom:12px;z-index:3;box-shadow:0 9px 25px rgba(0,0,0,.07)}
.settings-save-bar .dark-button{flex-shrink:0}

@media (max-width:1080px){
  .hero{min-height:740px}
  .hero-title{font-size:clamp(65px,11.1vw,130px)}
  .section-heading h2{font-size:clamp(65px,9vw,105px)}
  .about-layout{gap:55px}
  .contact-layout{gap:40px}
}
@media (max-width:760px){
  .site-header{height:73px;padding:0 20px}
  .wordmark>span{font-size:16px}.wordmark small{font-size:8px}
  .nav-links{gap:16px}.nav-links a{font-size:10px}.nav-links sup{display:none}
  .header-email{display:none}
  .hero{height:auto;min-height:710px;grid-template-rows:auto minmax(530px,1fr) auto;padding:0 20px}
  .hero-topline,.hero-bottomline,.section-topline,.about-endline{font-size:9px;gap:10px}
  .hero-topline{padding-top:22px}
  .hero-stage{min-height:530px;padding:30px 0}
  .hero-visual{min-width:235px;width:68%;height:420px;min-height:0}
  .hero-title{font-size:clamp(55px,13.1vw,102px);letter-spacing:-.09em}
  .hero-photo-caption{width:calc(68% - 20px);left:calc(16% + 10px);bottom:60px}
  .hero-aside{display:none}
  .hero-bottomline{padding:21px 0 26px}
  .hero-tagline{font-size:12px;max-width:220px}
  .hero-scroll{font-size:9px}
  .portfolio-section,.statement-section,.contact-section{padding-left:20px;padding-right:20px}
  .section-heading{display:block;margin:50px 0 38px}
  .section-heading h2{font-size:clamp(58px,11vw,95px)}
  .section-heading>p{margin-top:22px;max-width:370px}
  .filter-bar{align-items:start}.photo-count{margin-top:10px}
  .gallery{gap:55px 18px}.gallery .photo-card:nth-child(n){margin:0}
  .gallery .photo-card:nth-child(4n + 1),.gallery .photo-card:nth-child(4n + 4){grid-column:span 7}
  .gallery .photo-card:nth-child(4n + 2),.gallery .photo-card:nth-child(4n + 3){grid-column:span 5}
  .gallery .photo-card:nth-child(4n + 2){padding-top:50px}
  .gallery .photo-card:nth-child(4n + 4){padding-top:50px}
  .portfolio-body[data-layout="grid"] .gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
  .portfolio-body[data-layout="grid"] .gallery .photo-card{padding:0}
  .about-layout{grid-template-columns:1fr;gap:45px;padding:55px 0 60px}
  .about-image{max-height:480px;max-width:470px;width:85%}
  .about-copy h2{font-size:clamp(57px,11vw,90px)}
  .contact-layout{grid-template-columns:1fr;gap:60px;padding-top:60px}
  .contact-layout h2{font-size:clamp(61px,11vw,99px)}
  .contact-aside{min-height:200px}
  .site-footer{padding:25px 20px;flex-wrap:wrap}
  .photo-dialog-grid{grid-template-columns:1fr}.photo-dialog-image-wrap{min-height:240px;max-height:48dvh}.photo-dialog-image-wrap img{max-height:48dvh}.photo-dialog-info{padding:30px 25px}
  .dialog-divider{margin:25px 0}
  .request-dialog{padding:40px 23px 25px}
  .admin-shell{padding:48px 18px 100px}.admin-intro{align-items:start}.admin-intro h1{font-size:56px}
  .admin-layout{grid-template-columns:1fr}
  .settings-grid{grid-template-columns:1fr}.settings-intro{align-items:start;flex-direction:column}
}
@media (max-width:490px){
  .hero{min-height:630px;grid-template-rows:auto minmax(470px,1fr) auto}
  .hero-stage{min-height:470px}
  .hero-visual{width:75%;height:380px}
  .hero-title{font-size:clamp(45px,13vw,68px)}
  .hero-photo-caption{left:calc(12.5% + 11px);width:calc(75% - 22px);bottom:49px}
  .hero-bottomline{align-items:start}
  .hero-scroll{margin-top:3px}.hero-scroll span{display:none}
  .section-heading h2{font-size:clamp(50px,11vw,65px)}
  .filter-bar{display:block}.filter{padding:9px 11px;font-size:10px}.photo-count{display:block;margin-top:15px}
  .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 12px}
  .gallery .photo-card:nth-child(n){grid-column:span 1;padding:0;margin:0}
  .gallery .photo-card:nth-child(n) .photo-frame{aspect-ratio:4/5}
  .photo-meta{display:block}.photo-meta strong{display:block;font-size:12px}.photo-meta span{display:block;text-align:left;margin-top:6px;font-size:9px}
  .photo-overlay{width:32px;height:32px;font-size:19px;bottom:9px;right:9px;opacity:1;transform:none}
  .portfolio-body[data-layout="grid"] .gallery{gap:30px 12px}
  .about-image{width:100%}
  .about-copy h2{font-size:clamp(48px,11vw,64px)}
  .contact-layout h2{font-size:clamp(51px,12vw,70px)}
  .site-footer{gap:15px}.site-footer>span{order:3;width:100%}
  .form-row{grid-template-columns:1fr}
  .admin-intro{display:block}.admin-intro h1{font-size:50px}
  .admin-tabs{gap:0}.admin-tab{font-size:11px;padding:14px 12px}
  .admin-photo{align-items:start}.admin-photo img{width:65px;height:75px}.photo-edit-controls{display:grid}.photo-edit-controls input,.photo-edit-controls select{width:100%;max-width:none}
  .request-item-head{flex-direction:column;gap:8px}
  .settings-save-bar{flex-direction:column;align-items:stretch}.settings-save-bar .dark-button{width:100%}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}}


/* BULK UPLOADER / OWNER DASHBOARD */
.batch-selection{border:1px solid #dcd8d1;background:#f6f4ef;padding:17px;min-width:0}
.batch-selection-header,.batch-progress-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.batch-selection-header strong,.batch-progress-head strong,.batch-progress-head span{font-size:11px;letter-spacing:.065em;font-weight:800}
.batch-clear,.batch-remove{border:0;border-bottom:1px solid currentColor;background:transparent;color:#514d47;padding:7px 0;letter-spacing:.045em;font-size:10px;font-weight:800;white-space:nowrap}
.batch-remove:disabled,.batch-clear:disabled{opacity:.4;cursor:default}
.batch-queue{display:grid;gap:10px;margin:17px 0}
.batch-item{border:1px solid #dedad2;background:#fff;display:grid;grid-template-columns:65px minmax(0,1fr) auto;align-items:start;gap:13px;padding:11px;min-width:0}
.batch-thumb{height:85px;width:65px;object-fit:cover;background:#ddd}
.batch-item-main{min-width:0;display:grid;gap:7px}
.batch-filename{font-size:11px;color:#6d6962;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.batch-title-label{font-size:9px!important;display:grid;gap:5px}
.admin-form .batch-title-label input{padding:8px 10px;font-size:13px;min-width:0;width:100%}
.batch-state{font-size:11px;line-height:1.55;letter-spacing:0;color:#68645e;overflow-wrap:anywhere}
.batch-state-published{color:#256647}.batch-state-failed{color:#a33d31}
.batch-remove{margin-top:6px}
.batch-progress-area{border-top:1px solid #dcd8d1;padding-top:15px}
.batch-progress-head{margin-bottom:9px}
.batch-progress-area progress{width:100%;height:9px;display:block;appearance:none;border:0;border-radius:0;background:#e9e6df}
.batch-progress-area progress::-webkit-progress-bar{background:#e9e6df}
.batch-progress-area progress::-webkit-progress-value{background:#1a1a1a}
.batch-progress-area progress::-moz-progress-bar{background:#1a1a1a}
.admin-form .dark-button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:490px){.batch-item{grid-template-columns:50px minmax(0,1fr);gap:10px}.batch-thumb{width:50px;height:66px}.batch-remove{grid-column:2;justify-self:start;margin:0}.batch-selection{padding:12px}}

/* =======================================================================
   GALLERY 3.0 — FULL-FRAME, DENSE GRID, FOLDER NAV, SAFE TITLE WRAPPING
   This block intentionally overrides the older editorial masonry rules.
   ======================================================================= */
/* Keep the landing page editorial, but bring more photographs into view. */
.hero{min-height:580px;max-height:none;grid-template-rows:auto minmax(420px,1fr) auto}
.hero-stage{min-height:420px}
.hero-visual{background-size:contain;background-repeat:no-repeat}
.hero-title{font-size:clamp(52px,9vw,152px);letter-spacing:-.075em}
.hero-title span{white-space:normal;overflow-wrap:anywhere}
.section-heading{margin:52px 0 36px}
.section-heading h2{font-size:clamp(47px,7.7vw,109px);max-width:none;overflow-wrap:anywhere}
.portfolio-section{padding-bottom:80px}

/* Home filmstrip: six different, clickable thumbnails. */
.quick-strip{background:var(--hero-bg);color:var(--hero-ink);padding:0 clamp(24px,4.4vw,88px) 38px}
.quick-strip-top{display:flex;justify-content:space-between;gap:16px;border-top:1px solid color-mix(in srgb,currentColor 30%,transparent);padding:16px 0 20px;font-size:10px;letter-spacing:.1em;font-weight:700}
.quick-strip-top a{text-decoration:underline;text-underline-offset:4px;white-space:nowrap}
.quick-strip-images{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.quick-image{min-width:0;display:block;aspect-ratio:1/1;border:1px solid color-mix(in srgb,currentColor 22%,transparent);padding:5px;background:color-mix(in srgb,var(--hero-ink) 6%,var(--hero-bg));color:inherit;position:relative;cursor:zoom-in;overflow:hidden}
.quick-image img{display:block;width:100%;height:100%;object-fit:contain;filter:none}
.quick-image span{position:absolute;left:4px;right:4px;bottom:4px;padding:6px;background:rgba(10,10,10,.73);font-size:10px;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;opacity:0;transition:opacity .2s}
.quick-image:hover span,.quick-image:focus-visible span{opacity:1}

/* Bigger, touch-friendly folders with photo counts and horizontal navigation. */
.filter-bar{align-items:center;margin-bottom:16px;padding:18px 0}
.filters{gap:10px}
.filters .filter{min-height:52px;display:inline-flex;align-items:center;gap:13px;justify-content:space-between;padding:12px 16px;border:1px solid color-mix(in srgb,currentColor 24%,transparent);font-size:13px;letter-spacing:0;text-transform:none}
.filter-count{font-size:10px;opacity:.58;font-variant-numeric:tabular-nums}
.subfilter-bar{display:block;padding:4px 0 24px;min-width:0}
.subfilter-label{display:block;font-size:12px;margin:0 0 13px}
.subfilters{display:flex;flex-wrap:nowrap;gap:10px;width:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding:2px 1px 10px;scrollbar-width:thin;scroll-snap-type:x proximity}
.collection-tile{border:1px solid color-mix(in srgb,currentColor 24%,transparent);background:transparent;color:inherit;min-height:100px;min-width:185px;max-width:225px;flex:0 0 auto;display:grid;grid-template-columns:24px minmax(0,1fr);grid-template-rows:auto auto;align-content:center;align-items:center;gap:8px 10px;padding:15px 16px;text-align:left;scroll-snap-align:start;transition:background .15s,color .15s}
.collection-tile .folder-symbol{grid-row:1 / 3;align-self:start;font-size:23px;line-height:1;opacity:.75;font-weight:400}
.collection-tile strong{font-size:13px;line-height:1.23;font-weight:750;overflow-wrap:anywhere}
.collection-tile small{font-size:10px;line-height:1.4;letter-spacing:.045em;opacity:.66}
.collection-tile:hover{border-color:currentColor}
.collection-tile.active{background:var(--work-ink);color:var(--work-bg);border-color:var(--work-ink)}

/* Both existing gallery modes now display many smaller, *uncropped* frames. */
.portfolio-body .gallery,.portfolio-body[data-layout="grid"] .gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:25px 16px;align-items:start}
.portfolio-body .gallery .photo-card:nth-child(n){grid-column:auto;min-width:0;margin:0;padding:0;transform:none}
.portfolio-body .gallery .photo-card:nth-child(n) .photo-frame{width:100%;aspect-ratio:4/5;background:#dedbd5;border:1px solid color-mix(in srgb,var(--work-ink) 11%,transparent);display:flex;justify-content:center;align-items:center}
.portfolio-body .gallery .photo-card[data-orientation="landscape"] .photo-frame{aspect-ratio:4/3}
.portfolio-body .gallery .photo-frame img{width:100%;height:100%;display:block;object-fit:contain;object-position:center;transform:none!important}
.portfolio-body[data-layout="editorial"] .gallery .photo-card:nth-child(4n+2){padding-top:16px}
.portfolio-body[data-layout="editorial"] .gallery .photo-card:nth-child(4n+4){padding-top:10px}
.photo-meta{display:block;margin-top:9px;padding-top:9px;min-width:0}
.photo-meta strong{display:block;font-size:12px;font-weight:700;line-height:1.3;overflow-wrap:anywhere;white-space:normal}
.photo-meta span{display:block;font-size:9px;text-align:left;margin-top:6px;line-height:1.45;overflow-wrap:anywhere}
.portfolio-body[data-density="comfortable"] .gallery,.portfolio-body[data-density="comfortable"][data-layout="grid"] .gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 22px}
.portfolio-body[data-density="comfortable"] .gallery .photo-meta strong{font-size:14px}
.gallery-footnote{margin:45px 0 0}
@media (min-width:1700px){
  .portfolio-body[data-density="compact"] .gallery,.portfolio-body[data-density="compact"][data-layout="grid"] .gallery{grid-template-columns:repeat(5,minmax(0,1fr));gap:26px 18px}
}

/* Photo dialog: entire image visible, no scrolling sideways, long names wrap. */
.photo-dialog{width:min(1180px,calc(100vw - 36px));max-width:calc(100vw - 36px);max-height:calc(100dvh - 30px);overflow-x:hidden;overflow-y:auto}
.photo-dialog-grid{display:grid;grid-template-columns:minmax(0,57%) minmax(0,43%);min-height:0;width:100%;min-width:0}
.photo-dialog-image-wrap{min-width:0;min-height:min(580px,calc(100dvh - 62px));max-height:calc(100dvh - 38px);padding:10px;overflow:hidden}
.photo-dialog-image-wrap img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 62px);object-fit:contain;object-position:center}
.photo-dialog-info{min-width:0;overflow-wrap:anywhere;padding:clamp(42px,4.2vw,58px) clamp(20px,3.2vw,44px) 32px;align-items:stretch}
.photo-dialog-info .section-kicker{line-height:1.55;overflow-wrap:anywhere}
.photo-dialog-info h3{font-size:clamp(23px,2.7vw,43px);line-height:1.03;letter-spacing:-.045em;white-space:normal;overflow-wrap:anywhere;word-break:normal;max-width:100%;margin:20px 0 22px}
.photo-dialog-info p{max-width:100%;overflow-wrap:anywhere}
.photo-dialog-info .dark-button{font-size:12px;line-height:1.5;min-height:55px;text-align:left}

/* Drag and edit many files on an uncluttered owner dashboard. */
.admin-layout{grid-template-columns:minmax(0,1.7fr) minmax(220px,.65fr)}
.admin-photo img{object-fit:contain;background:#e9e7e2}
.batch-thumb{object-fit:contain;background:#e7e4dd}
.batch-naming{border:1px solid #c8c3bb;min-width:0;display:grid;gap:14px;margin:20px 0 15px;padding:20px;background:#fff}
.batch-naming legend{padding:0 8px;font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.04em}
.batch-naming .field-hint{margin:0}
.batch-naming .naming-row{display:grid}
.batch-naming label{display:grid;gap:8px;font-size:10px;letter-spacing:.05em;font-weight:700;min-width:0}
.batch-naming select,.batch-naming input[type="text"],.batch-naming input[type="number"]{width:100%;padding:12px 13px;min-width:0;border:1px solid #d5d0c8;background:#faf9f6;color:#111;font-size:13px;letter-spacing:0;font-weight:400}
.batch-naming .naming-checkbox{display:flex;align-items:flex-start;gap:10px;font-size:11px;font-weight:500;letter-spacing:0;line-height:1.45}
.batch-naming .naming-checkbox input{width:17px;min-width:17px;height:17px;margin:0;accent-color:#161616}
.batch-naming .naming-checkbox .field-hint{font-size:10px;display:inline}
.naming-extra{display:grid;gap:13px;padding:15px;border:1px solid #e2ddd5;background:#f7f5f0}
.naming-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.naming-component-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.naming-options{grid-template-columns:repeat(3,minmax(0,1fr))}
.naming-token-text{margin-top:1px}
.naming-preview-wrap{background:#f1efe9;padding:13px;min-width:0}
.naming-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;letter-spacing:.06em}
.naming-preview-head small{font-size:10px;opacity:.65}
.naming-preview{margin-top:10px;display:grid;gap:6px}
.naming-preview-row{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1.15fr);gap:9px;align-items:start;padding:8px 0;border-top:1px solid #d8d4cc;font-size:11px;min-width:0}
.naming-preview-row span:first-child{color:#6e6a64}
.naming-preview-row span,.naming-preview-row strong{overflow-wrap:anywhere;min-width:0}
.naming-preview-row strong{color:#111}
#apply-batch-names{justify-self:start;min-height:46px;background:transparent;border:1px solid #111;padding:12px 14px;font-size:11px;font-weight:800;letter-spacing:.03em}
#apply-batch-names:not(:disabled):hover{background:#111;color:#fff}
#apply-batch-names:disabled{opacity:.42;cursor:not-allowed}
.settings-grid .settings-inline-toggle{border:1px solid #d6d1c9;padding:15px;display:flex;gap:12px;flex-direction:column;justify-content:center}
.settings-inline-toggle span{font-size:12px;font-weight:400;letter-spacing:0;display:flex;align-items:center;gap:10px;line-height:1.5}
.settings-inline-toggle input{accent-color:#171717;width:18px;height:18px;flex-shrink:0}

@media (max-width:1160px){
 .portfolio-body .gallery,.portfolio-body[data-layout="grid"] .gallery{grid-template-columns:repeat(3,minmax(0,1fr))}
 .portfolio-body[data-density="comfortable"] .gallery,.portfolio-body[data-density="comfortable"][data-layout="grid"] .gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
 .admin-layout{grid-template-columns:1fr}
}
@media (max-width:850px){
 .portfolio-body .gallery,.portfolio-body[data-layout="grid"] .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}
 .photo-dialog-grid{grid-template-columns:1fr}
 .photo-dialog-image-wrap{min-height:0;max-height:min(52dvh,490px);padding:8px}
 .photo-dialog-image-wrap img{max-height:min(50dvh,470px);max-width:100%}
 .photo-dialog-info{padding:22px 25px 27px}
 .photo-dialog-info h3{font-size:clamp(25px,5.7vw,38px)}
 .quick-strip-images{grid-template-columns:repeat(3,minmax(0,1fr))}
 .hero{min-height:660px;grid-template-rows:auto minmax(450px,1fr) auto}
 .hero-stage{min-height:450px}
 .hero-title{font-size:clamp(49px,10.3vw,110px)}
}
@media (max-width:550px){
 .hero{min-height:590px;grid-template-rows:auto minmax(400px,1fr) auto}
 .hero-stage{min-height:400px}
 .hero-title{font-size:clamp(39px,10.3vw,67px)}
 .quick-strip{padding-left:20px;padding-right:20px}
 .quick-strip-top{font-size:9px}
 .quick-strip-top a{white-space:normal;text-align:right}
 .quick-strip-images{gap:7px}
 .collection-tile{min-width:155px;max-width:192px;min-height:88px;padding:12px}
 .filters .filter{padding:10px 12px;min-height:48px}
 .portfolio-body .gallery,.portfolio-body[data-layout="grid"] .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:21px 10px}
 .portfolio-body[data-density="comfortable"] .gallery,.portfolio-body[data-density="comfortable"][data-layout="grid"] .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 12px}
 .portfolio-body .gallery .photo-meta strong{font-size:11px}
 .photo-dialog{width:calc(100vw - 22px);max-width:calc(100vw - 22px)}
 .photo-dialog-info{padding:20px 20px 26px}
 .photo-dialog-info h3{font-size:clamp(23px,7vw,33px)}
 .batch-naming{padding:13px}
 .naming-grid,.naming-component-grid,.naming-options{grid-template-columns:1fr}
 .settings-grid .settings-inline-toggle{min-height:80px}
}

/* =======================================================================
   HERO CAROUSEL 4.0 — THREE FULL PHOTOGRAPHS, RANDOM EVERY FIVE SECONDS
   Responsive + accessible controls. Originals remain in private Supabase.
   ======================================================================= */
.hero{min-height:680px;max-height:none;grid-template-rows:auto minmax(520px,1fr) auto}
.hero-stage{min-height:520px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(270px,1fr) auto;justify-items:stretch;align-content:center;align-items:center;gap:20px;padding:22px 0 16px}
.hero-stage .hero-title{position:relative;inset:auto;transform:none;grid-column:1;grid-row:1;z-index:1;font-size:clamp(42px,7.8vw,119px);line-height:.89;margin:0;display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:5px 16px;pointer-events:none}
.hero-stage .hero-title span{min-width:0;flex:0 1 auto;max-width:100%;overflow-wrap:anywhere;white-space:normal}
.hero-stage .hero-title span:nth-child(2){text-align:right;padding:0}
.hero-carousel{width:100%;grid-column:1;grid-row:2;min-width:0;min-height:0;position:relative;z-index:1}
.hero-carousel-photos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.32fr) minmax(0,1fr);align-items:center;gap:clamp(8px,1.8vw,26px);height:clamp(245px,36vw,450px);width:100%}
.hero-slide{display:block;min-width:0;width:100%;height:76%;border:1px solid color-mix(in srgb,var(--hero-ink) 20%,transparent);padding:5px;position:relative;overflow:hidden;background:color-mix(in srgb,var(--hero-ink) 6%,var(--hero-bg));color:var(--hero-ink);animation:heroSlideReveal .55s ease both;cursor:zoom-in}
.hero-slide-2{height:100%}
.hero-slide img{display:block;width:100%;height:100%;object-fit:contain;filter:grayscale(1)}
[data-image-treatment="color"] .hero-slide img{filter:none}
.hero-slide:focus-visible{z-index:2}
.hero-slide-label{position:absolute;bottom:8px;left:9px;right:9px;max-width:calc(100% - 18px);background:rgba(10,10,10,.78);color:#fff;padding:8px 9px;font-size:10px;font-weight:700;letter-spacing:.045em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;opacity:0;transition:opacity .2s}
.hero-slide:hover .hero-slide-label,.hero-slide:focus-visible .hero-slide-label{opacity:1}
.hero-carousel-placeholder{grid-column:1/-1;display:grid;place-items:center;height:100%;border:1px solid color-mix(in srgb,currentColor 25%,transparent);color:color-mix(in srgb,currentColor 60%,transparent);font-size:12px;font-weight:700;letter-spacing:.13em;text-align:center}
.hero-stage .hero-photo-caption{position:relative;grid-column:1;grid-row:3;bottom:auto;left:auto;width:100%;max-width:none;color:var(--hero-ink);padding:0 3px;font-size:10px;align-self:center}
.hero-stage .hero-aside{display:none}
.hero-stage .hero-texture{z-index:0}
.hero-bottomline{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px}
.hero-carousel-controls{display:flex;align-items:center;gap:7px;margin-left:auto}
.hero-carousel-counter{font-size:10px;font-weight:700;letter-spacing:.1em;white-space:nowrap;margin-right:8px;font-variant-numeric:tabular-nums}
.hero-carousel-control{width:38px;height:38px;border:1px solid color-mix(in srgb,currentColor 35%,transparent);background:transparent;color:inherit;font-size:17px;display:grid;place-items:center;line-height:1;padding:0;transition:background .15s,color .15s}
.hero-carousel-control:hover:not(:disabled){background:var(--hero-ink);color:var(--hero-bg)}
.hero-carousel-control:disabled{opacity:.35;cursor:not-allowed}
@keyframes heroSlideReveal{from{opacity:.2;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:850px){
  .hero{min-height:590px;grid-template-rows:auto minmax(430px,1fr) auto}
  .hero-stage{min-height:430px;grid-template-rows:auto minmax(210px,1fr) auto;gap:18px}
  .hero-stage .hero-title{font-size:clamp(38px,8vw,78px)}
  .hero-carousel-photos{height:clamp(205px,38vw,330px)}
  .hero-bottomline .hero-tagline{max-width:100%}
}
@media(max-width:550px){
  .hero{min-height:570px;grid-template-rows:auto minmax(340px,1fr) auto}
  .hero-stage{min-height:340px;grid-template-rows:auto minmax(160px,1fr) auto;gap:15px}
  .hero-stage .hero-title{font-size:clamp(32px,8.5vw,52px);gap:0 5px}
  .hero-carousel-photos{height:clamp(155px,51vw,235px);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,1fr);gap:6px}
  .hero-slide{height:78%;padding:2px}
  .hero-slide-2{height:100%}
  .hero-slide-label{display:none}
  .hero-bottomline{gap:15px 10px;align-items:center}
  .hero-carousel-controls{order:2;margin-left:0}
  .hero-scroll{order:3;margin-left:auto;font-size:9px}
  .hero-carousel-counter{margin-right:2px;font-size:9px}
  .hero-carousel-control{width:32px;height:32px}
}
@media(prefers-reduced-motion: reduce){
  .hero-slide{animation:none!important}
  .hero-slide-label{transition:none}
}

/* =======================================================================
   FRAMELESS PHOTOGRAPHY V5 — real photo dimensions, no tinted photo boxes.
   Cards retain the original responsive grid and metadata under each image.
   ======================================================================= */
/* In the gallery, the image itself sets the photo height. The underlying
   preview is unmodified: no crop, no extra fill, no border or padded box. */
.portfolio-body .gallery .photo-card:nth-child(n) .photo-frame,
.portfolio-body .gallery .photo-card[data-orientation="landscape"] .photo-frame,
.portfolio-body[data-layout="grid"] .gallery .photo-card .photo-frame {
  display: block;
  width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: auto;
  padding: 0;
  border: 0;
  outline: none;
  background: transparent;
  overflow: hidden;
}
.portfolio-body .gallery .photo-frame img,
.portfolio-body[data-layout="grid"] .gallery .photo-frame img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
  aspect-ratio: auto;
  object-fit: contain;
  object-position: center;
  background: transparent;
  border: 0;
}
.portfolio-body .gallery .photo-frame:focus-visible {
  outline: 2px solid var(--work-ink);
  outline-offset: 4px;
}
/* The hero carousel retains three slots and its timer/controls, with the
   images now floating on the hero background rather than boxed cards. */
.hero-carousel .hero-slide {
  border: 0;
  padding: 0;
  background: transparent;
}
.hero-carousel .hero-slide img {
  background: transparent;
  border: 0;
}
.hero-carousel .hero-slide:focus-visible {
  outline: 2px solid var(--hero-ink);
  outline-offset: 3px;
}
/* The secondary six-photo strip also uses an unframed presentation. */
.quick-strip .quick-image {
  border: 0;
  padding: 0;
  background: transparent;
}
.quick-strip .quick-image:focus-visible {
  outline: 2px solid var(--hero-ink);
  outline-offset: 3px;
}

/* =======================================================================
   V6 / DISCREET GALLERY COPYRIGHT — NEVER SHOWN ON THE HOMEPAGE CAROUSEL.
   Overlay applies to existing and future photos without editing stored files.
   ======================================================================= */
.portfolio-body .gallery .photo-frame{position:relative}
.gallery-watermark{
  position:absolute;
  z-index:3;
  bottom:clamp(6px,.8vw,12px);
  right:clamp(7px,.85vw,13px);
  max-width:calc(100% - 25px);
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-family:var(--body);
  font-size:clamp(8px,.65vw,10px);
  font-weight:600;
  letter-spacing:.065em;
  line-height:1.3;
  color:#fff;
  text-shadow:0 1px 3px rgba(0,0,0,.75),0 0 7px rgba(0,0,0,.45);
  opacity:var(--gallery-wm-opacity,.52);
  user-select:none;
  -webkit-user-select:none;
  pointer-events:none;
  background:none;
  border:0;
  padding:0;
}
[data-watermark-position="bottom-left"] .gallery-watermark{left:clamp(7px,.85vw,13px);right:auto}
/* Center overlay on the actual image, not the surrounding dark dialog panel. */
.photo-dialog-image-wrap .dialog-image-stack{
  position:relative;
  display:inline-flex;
  max-width:100%;
  max-height:calc(100dvh - 62px);
  align-items:center;
  justify-content:center;
}
.photo-dialog-image-wrap .dialog-image-stack img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 62px)}
.photo-dialog-image-wrap .gallery-watermark{font-size:clamp(10px,.82vw,12px);bottom:12px;right:12px}
[data-watermark-position="bottom-left"] .photo-dialog-image-wrap .gallery-watermark{left:12px;right:auto}
/* Watermark lives in public gallery/modal ONLY, never slides or quick-strip. */
.hero-carousel .gallery-watermark,.quick-strip .gallery-watermark{display:none!important}
.protection-notice{margin:24px 0 16px;padding:22px;border:1px solid #d0cbc3;background:#f5f3ee;display:grid;gap:12px}
.protection-notice strong{font-size:14px}
.protection-notice p{margin:0;font-size:12px;line-height:1.6;color:#4c4c4c}
.protection-notice button{justify-self:start;min-height:42px;padding:10px 15px}
.protection-notice progress{width:100%;height:11px;accent-color:#232323}
.protection-notice .form-status{min-height:18px;overflow-wrap:anywhere}


/* =======================================================================
   V8 — TIGHT MASONRY COLUMNS + TWELVE PHOTOGRAPHS PER PAGE
   4 columns on desktop (3 images each with 12/page), 3 on tablet, 2 on mobile.
   Each column stacks photos independently, so tall portraits never leave a
   grid-row-shaped hole beneath neighboring landscape photographs.
   ======================================================================= */
.portfolio-body .gallery,
.portfolio-body[data-layout="grid"] .gallery,
.portfolio-body[data-density="comfortable"] .gallery,
.portfolio-body[data-density="compact"] .gallery {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: clamp(10px, 1.55vw, 20px);
  align-items: start;
}
.portfolio-body .gallery .gallery-column {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(14px, 1.65vw, 23px);
}
.portfolio-body .gallery .gallery-column .photo-card:nth-child(n),
.portfolio-body[data-layout="editorial"] .gallery .gallery-column .photo-card:nth-child(n) {
  width: 100%;
  grid-column: auto;
  margin: 0 !important;
  padding: 0 !important;
  min-width: 0;
}
.portfolio-body .gallery .gallery-column .photo-card .photo-meta {
  margin-top: 7px;
  padding-top: 7px;
}
.portfolio-body .gallery .gallery-column .photo-card .photo-meta strong {
  overflow-wrap: anywhere;
}
/* A larger gap is kept only when Comfortable was intentionally selected. */
.portfolio-body[data-density="comfortable"] .gallery .gallery-column { gap: 28px; }
/* The photo frames remain frameless and keep their original aspect ratios. */
.portfolio-body .gallery .gallery-column .photo-frame,
.portfolio-body .gallery .gallery-column .photo-frame img {
  aspect-ratio: auto;
  height: auto;
  background: transparent;
  border: 0;
}

.gallery-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  column-gap: 24px;
  row-gap: 18px;
  padding: 27px 0 4px;
  margin-top: 30px;
  border-top: 1px solid color-mix(in srgb,currentColor 23%,transparent);
}
.gallery-pagination[hidden] { display: none; }
.pagination-summary {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .1em;
  opacity: .66;
}
.pagination-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.page-button {
  min-width: 40px;
  min-height: 44px;
  padding: 9px 10px;
  background: transparent;
  color: inherit;
  border: 1px solid transparent;
  font: inherit;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .05em;
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}
.page-button:hover:not(:disabled), .page-button:focus-visible {
  border-color: currentColor;
}
.page-button.active {
  background: var(--work-ink);
  border-color: var(--work-ink);
  color: var(--work-bg);
  cursor: default;
}
.page-button:disabled { opacity: .3; cursor: not-allowed; }
.pagination-ellipsis { min-width: 18px; text-align: center; font-size: 16px; opacity: .65; }
.gallery-footnote { margin-top: 32px; }
@media(max-width: 1020px) {
  .portfolio-body .gallery,
  .portfolio-body[data-layout="grid"] .gallery,
  .portfolio-body[data-density="comfortable"] .gallery,
  .portfolio-body[data-density="compact"] .gallery {
    grid-template-columns: repeat(3,minmax(0,1fr));
  }
}
@media(max-width: 600px) {
  .portfolio-body .gallery,
  .portfolio-body[data-layout="grid"] .gallery,
  .portfolio-body[data-density="comfortable"] .gallery,
  .portfolio-body[data-density="compact"] .gallery {
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 10px;
  }
  .portfolio-body .gallery .gallery-column { gap: 17px; }
  .gallery-pagination { align-items: flex-start; flex-direction: column; margin-top: 22px; }
  .pagination-controls { gap: 1px; }
  .page-button { min-width: 38px; padding-inline: 8px; }
}

/* Retain the editor's separate Regular Grid option for photographers who
   explicitly prefer aligned rows; Editorial is the space-saving masonry view. */
.portfolio-body[data-layout="grid"] .gallery .gallery-column {
  display: contents;
}
.portfolio-body[data-layout="grid"] .gallery .gallery-column .photo-card {
  align-self: start;
}


/* SeenByNick V9 / searchable four-level archive */
.folder-explorer{display:grid;gap:15px;padding:6px 0 30px;min-width:0}
.folder-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent);padding:10px 0 16px}
.folder-breadcrumbs{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}
.folder-crumb{background:transparent;color:inherit;border:none;padding:7px 5px;font-size:11px;font-weight:750;cursor:pointer;letter-spacing:.04em;overflow-wrap:anywhere}
.folder-crumb[aria-current=location]{text-decoration:underline;text-underline-offset:4px}
.folder-crumb:hover{opacity:.6}
.folder-crumb-separator{opacity:.5;font-size:10px}
.archive-search-label{width:min(340px,100%);display:flex;align-items:center;gap:9px;border:1px solid color-mix(in srgb,currentColor 30%,transparent);padding:11px 15px}
.archive-search-label span{font-size:22px;line-height:1}
.archive-search-label input{appearance:none;border:0!important;background:transparent!important;color:inherit!important;outline:none!important;font:inherit;font-size:13px;min-width:0;flex:1;width:100%}
.archive-search-label input::placeholder{color:inherit;opacity:.6}
.folder-heading-line{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:11px;font-weight:750;letter-spacing:.055em}
.folder-heading-line small{font-size:11px;font-weight:400;opacity:.6;letter-spacing:0}
.folder-tiles{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:10px;scrollbar-width:thin;flex-wrap:nowrap}
.folder-tiles[hidden]{display:none!important}
.folder-level-tile{min-width:200px;max-width:250px;min-height:110px}
.tag-filter-wrap{display:flex;align-items:center;gap:12px;min-width:0;border-top:1px solid color-mix(in srgb,currentColor 15%,transparent);padding-top:18px}
.tag-filter-wrap[hidden]{display:none}
.tag-filter-wrap>span{font-size:11px;font-weight:750;letter-spacing:.08em}
.tag-filter-buttons{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;padding:2px 0 6px;min-width:0;scrollbar-width:thin}
.archive-tag{white-space:nowrap;color:inherit;background:transparent;border:1px solid color-mix(in srgb,currentColor 30%,transparent);font-size:10px;padding:9px 11px;font-weight:650;cursor:pointer}
.archive-tag.active,.archive-tag:hover{background:var(--work-ink);border-color:var(--work-ink);color:var(--work-bg)}
.folder-admin-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.folder-admin-fields label{min-width:0}
.folder-path-preview{background:#f2f0e9;border:1px solid #ded8cf;padding:13px!important;font-size:10px!important;color:#5e5b55;overflow-wrap:anywhere}
.folder-path-preview span{font-weight:700;color:#141414;font-size:13px;letter-spacing:0;display:block;margin-top:8px}
.manage-tools{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;margin:24px 0}
.manage-tools>label:first-child{display:grid;gap:6px;flex:1 1 230px;font-size:10px;font-weight:750;letter-spacing:.06em}
.manage-tools input[type=search]{border:1px solid #d6d1ca;background:#faf9f6;padding:12px 14px;font-size:13px}
.manage-tools .manage-select-all{display:flex;gap:8px;align-items:center;font-size:12px}
.manage-tools>strong{font-size:12px}
.bulk-move-form{background:#f7f5f1;border:1px solid #dcd8d1;padding:20px;margin-bottom:24px;gap:15px}
.bulk-move-heading{display:flex;flex-direction:column;gap:4px;font-size:12px}
.bulk-move-heading small{font-size:11px;font-weight:400;color:#777}
.manage-photo-check{width:17px!important;height:17px!important;flex:0 0 17px;accent-color:#141414}
.photo-edit-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.photo-edit-controls input,.photo-edit-controls select{max-width:none;min-width:0;width:100%}
.photo-edit-controls .photo-tags-input{grid-column:span 2}
.photo-edit-controls button{min-width:80px}
.admin-photo-info{min-width:0}
.admin-photo[hidden]{display:none!important}
@media(max-width:780px){
 .folder-toolbar{align-items:stretch;flex-direction:column}
 .archive-search-label{width:100%}
 .folder-level-tile{min-width:175px;max-width:230px}
 .folder-admin-fields{grid-template-columns:1fr}
 .photo-edit-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
 .photo-edit-controls .photo-tags-input{grid-column:span 2}
}
@media(max-width:460px){.photo-edit-controls{grid-template-columns:1fr}.photo-edit-controls .photo-tags-input{grid-column:span 1}}

/* V10: simplified owner photo library; public site styles unchanged */
#tab-manage .photo-library-shell{padding:clamp(16px,2.5vw,30px)}
.library-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}
.library-heading h2{margin:8px 0 7px}.library-heading p{margin:0}
.library-layout{display:grid;grid-template-columns:minmax(195px,235px) minmax(0,1fr);gap:22px;align-items:start}
.library-sidebar{border:1px solid #dedbd5;background:#f8f7f4;padding:13px;max-height:80vh;overflow-y:auto;position:sticky;top:16px}
.library-pane-title{font-size:10px;font-weight:850;letter-spacing:.12em;padding:9px 8px 15px;border-bottom:1px solid #dedbd5;display:flex;justify-content:space-between;gap:8px}
.library-pane-title span{color:#777;font-weight:500;letter-spacing:0}
.library-tree{display:grid;gap:2px;padding-top:12px}
.library-folder{border:0;background:transparent;color:#32302d;text-align:left;padding:10px 9px 10px calc(6px + var(--depth)*10px);display:flex;align-items:center;gap:7px;font-size:12px;cursor:pointer;width:100%;min-width:0}
.library-folder:hover,.library-folder.is-active{background:#e9e6e0;color:#0d0d0d}
.library-folder.is-active{font-weight:800}
.folder-symbol{font-size:13px;width:12px;flex:none;color:#817a70}
.folder-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.folder-number{font-size:10px;color:#817a70;font-variant-numeric:tabular-nums}
.library-current{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid #e2dfd9;padding-bottom:17px}
.library-current h3{font-family:var(--display);font-size:clamp(24px,3vw,38px);font-weight:800;letter-spacing:-.06em;margin:10px 0 5px}
.library-count{font-size:11px;color:#777}
.library-breadcrumbs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:11px;color:#777}
.library-breadcrumbs button{border:0;background:none;padding:0;cursor:pointer;color:inherit;font-size:11px}
.library-breadcrumbs button:hover{text-decoration:underline}
#tab-manage .library-toolbar{margin:14px 0 22px;display:flex;gap:10px;align-items:end}
.library-toolbar .library-search-label{flex:1 1 220px}
.library-toolbar .manage-select-all{padding-bottom:12px;white-space:nowrap}
.library-toolbar>strong{white-space:nowrap;padding-bottom:12px}
.library-toolbar .outline-button{font-size:10px;white-space:nowrap}
.library-text-button{border:0;background:transparent;text-decoration:underline;color:#57524d;font-size:10px;font-weight:800;letter-spacing:.04em;padding:12px 5px;cursor:pointer}
.library-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 12px;align-items:start}
.library-photo-grid .admin-photo{display:block;min-width:0;padding:0;border:1px solid #e4e0d9;background:#fff}
.library-photo-grid .admin-photo[hidden]{display:none!important}
.library-photo-grid .admin-photo.is-selected{outline:2px solid #181818;outline-offset:1px}
.library-thumb{position:relative;display:flex;justify-content:center;align-items:center;height:175px;background:#eeece8;overflow:hidden}
.library-photo-grid .admin-photo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;background:transparent}
.library-thumb .manage-photo-check{position:absolute;top:9px;left:9px;z-index:1;width:21px!important;height:21px!important;accent-color:#141414;cursor:pointer;box-shadow:0 0 0 3px rgba(255,255,255,.75)}
.library-card-info{padding:11px 10px 12px;min-width:0;display:grid;gap:5px}
.library-card-info strong{font-size:12px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.library-card-info small{font-size:10px;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.library-edit-button{justify-self:start;margin-top:6px;padding:7px 0;border:0;border-bottom:1px solid #141414;background:transparent;color:#141414;letter-spacing:.08em;font-size:9px;font-weight:850;cursor:pointer}
.library-empty{padding:35px 10px!important;text-align:center;border:1px dashed #d6d1ca}
#tab-manage .library-bulk-panel{margin-bottom:20px;padding:18px}
.library-bulk-panel[hidden]{display:none!important}
.library-bulk-actions{display:flex;align-items:center;gap:15px;flex-wrap:wrap}
.library-edit-dialog{box-sizing:border-box;border:1px solid #d8d4ce;background:#fff;color:#141414;width:min(94vw,510px);max-height:90vh;padding:25px 26px 30px;overflow:auto;box-shadow:0 24px 100px #0005}
.library-edit-dialog::backdrop{background:rgba(8,8,8,.72)}
.library-edit-top{display:flex;align-items:start;justify-content:space-between;gap:14px}
.library-edit-top h2{font-family:var(--display);font-size:28px;letter-spacing:-.05em;margin:8px 0 16px}
.library-close{border:0;background:none;font-size:32px;line-height:1;cursor:pointer;color:#151515}
.library-edit-preview{display:flex;align-items:center;justify-content:center;background:#eceae5;height:185px;margin:0 0 20px}
.library-edit-preview img{max-width:100%;max-height:100%;object-fit:contain}
.library-edit-dialog .admin-form{display:grid;gap:12px}
.library-edit-dialog .admin-form label{display:grid;gap:6px}
.library-edit-dialog .admin-form input,.library-edit-dialog .admin-form select{width:100%;box-sizing:border-box}
.library-editor-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}
.library-danger{background:none;border:0;color:#a13429;font-size:10px;font-weight:850;cursor:pointer}
@media(max-width:1130px){.library-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.library-layout{grid-template-columns:205px minmax(0,1fr)}.library-thumb{height:155px}}
@media(max-width:850px){.library-layout{grid-template-columns:1fr}.library-sidebar{position:static;max-height:220px}.library-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.library-toolbar{align-items:stretch!important}}
@media(max-width:570px){.library-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-thumb{height:135px}.library-heading{align-items:start}.library-heading .outline-button{font-size:9px}.library-card-info{padding:9px}.library-edit-dialog{padding:18px}.library-toolbar .outline-button{flex:1 1 100%}}
