:root{--paper:#eee7db;--mat:#f9f5ec;--ink:#413c32;--muted:#847b6c;--line:#d2c8b8;--accent:#8a6447;--serif:Georgia,"Songti SC","Noto Serif CJK SC","STSong",serif;--sans:"Helvetica Neue","PingFang SC","Microsoft YaHei",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:50px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;isolation:isolate}body:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.038;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.8' filter='url(%23g)'/%3E%3C/svg%3E")}body.modal-open{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}img{max-width:100%;display:block}::selection{background:#d8c4a8}[hidden]{display:none!important}.page-width{width:min(1120px,calc(100% - 112px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:10px;left:20px;transform:translateY(-180%);z-index:30;background:var(--ink);color:var(--mat);padding:12px}.skip-link:focus{transform:none}
.header{height:106px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--serif);font-size:23px;letter-spacing:2px}.wordmark span{font-size:22px;letter-spacing:.5px;margin-left:5px;font-style:italic}.nav{display:flex;gap:35px}.nav a{font-size:12px;color:#6f675b;padding:12px 0}.nav a:hover{color:var(--accent)}.menu-toggle{display:none}
.hero{padding-top:58px}.hero-intro{text-align:center;margin-bottom:39px}.hero h1{font-family:var(--serif);font-size:clamp(32px,3.5vw,48px);font-weight:400;letter-spacing:4px;line-height:1.5;margin:0}.hero-intro p{font-size:12px;color:var(--muted);line-height:1.9;letter-spacing:1.5px;margin:14px 0 0}.photo-frame{background:var(--mat);padding:13px 13px 0;box-shadow:0 3px 8px #51422e0c,0 0 0 1px #8f7f6314}.hero-frame{margin:0}.hero-photo{width:100%;height:clamp(330px,39vw,490px);padding:0;display:block;overflow:hidden;background:#d9d3c5}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 55%;filter:none;transition:transform .8s}.hero-photo:hover img{transform:scale(1.012)}.hero-caption{display:flex;justify-content:space-between;align-items:center;padding:21px 9px 23px;font-size:11px;color:var(--muted);letter-spacing:1px}.hero-caption>span{font-family:var(--serif);font-size:14px;color:#6e6251}.hero-caption a:hover{color:var(--ink)}
.works{padding-top:106px;padding-bottom:78px}.works-heading{display:flex;align-items:baseline;justify-content:space-between}.works h2,.about h2,.contact h2{font-family:var(--serif);font-weight:400;font-size:31px;letter-spacing:3px;margin:0}.quiet-label{font-family:var(--serif);font-size:13px;color:var(--muted);letter-spacing:1px}.filters{display:flex;gap:31px;margin-top:28px;border-bottom:1px solid var(--line)}.filter{font-size:14px;letter-spacing:1.2px;color:var(--muted);padding:8px 2px 16px;position:relative;min-width:42px}.filter:first-child{font-size:12px}.filter:after{content:"";height:1px;position:absolute;bottom:-1px;left:0;right:0;background:var(--ink);transform:scaleX(0);transition:transform .2s}.filter.active{color:var(--ink)}.filter.active:after{transform:scaleX(1)}.filter:hover{color:var(--accent)}.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px;margin-top:34px}.work-card{min-width:0;animation:appear .3s ease both}.work-photo{width:100%;aspect-ratio:4/3;padding:0;display:block;overflow:hidden;background:#ddd6c7}.work-photo img{height:100%;width:100%;object-fit:cover;filter:none;transition:transform .7s}.work-photo:hover img{transform:scale(1.025)}.work-card[data-id=portrait] img{object-position:center 35%}.work-meta{display:flex;justify-content:space-between;gap:12px;padding:19px 8px 23px;align-items:baseline}.work-title{font-family:var(--serif);font-size:17px;font-weight:400;letter-spacing:1px;margin:0}.work-year{font-size:11px;color:var(--muted);letter-spacing:1px}.gallery-note{font-size:10px;color:#8b8171;text-align:center;margin:31px 0 0;line-height:1.9;letter-spacing:.4px}
.about{border-top:1px solid var(--line);padding:64px 0;display:grid;grid-template-columns:1fr 1.5fr;gap:50px;align-items:start}.about h2,.contact h2{font-size:25px;letter-spacing:2px}.about p{font-size:13px;color:var(--muted);line-height:2.1;margin:16px 0 0}.about .about-lead{font-family:var(--serif);color:var(--ink);font-size:19px;margin:0;letter-spacing:.7px}.contact{border-top:1px solid var(--line);padding:48px 0 57px;display:flex;align-items:center;justify-content:space-between;gap:25px}.contact p{font-size:12px;color:var(--muted);line-height:1.9;margin:14px 0 0}.contact-button{font-size:12px;border-bottom:1px solid #9e8d76;padding:12px 0;display:flex;gap:31px;align-items:center}.contact-button span{font-size:21px;line-height:1}.contact-button:hover{color:var(--accent)}.footer{border-top:1px solid var(--line);min-height:94px;display:flex;align-items:center;gap:28px;font-size:10px;color:var(--muted)}.footer p{margin:0;margin-right:auto}.footer button{font-size:10px;padding:10px 0}.footer a:hover,.footer button:hover{color:var(--ink)}
dialog{border:0;padding:0;color:var(--ink)}dialog::backdrop{background:#2c271ec7;backdrop-filter:blur(4px)}.lightbox{background:#292720;color:var(--mat);width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;inset:0}.lightbox[open]{display:flex;flex-direction:column}.lightbox-header{height:72px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:0 30px;border-bottom:1px solid #e4d3b41a}.lightbox-brand{font-family:var(--serif);font-size:20px;letter-spacing:1px}#lightbox-index{font-size:10px;letter-spacing:2px;color:#b6ad9b}.icon-button{width:42px;height:42px;display:grid;place-items:center;font-size:28px;font-weight:300;border-radius:50%}.icon-button:hover{background:#cbb89a1c}.lightbox-stage{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;position:relative;padding:24px 80px 10px}.lightbox-stage img{max-width:100%;max-height:100%;width:auto;height:100%;object-fit:contain}.photo-prev,.photo-next{position:absolute;top:50%;transform:translateY(-50%);font-size:22px}.photo-prev{left:20px}.photo-next{right:20px}.lightbox-footer{padding:20px 80px 28px;display:flex;justify-content:space-between;align-items:flex-end;gap:25px;flex-shrink:0}.lightbox-year{font-size:10px;letter-spacing:1px;color:#b3a78e;margin:0 0 8px}.lightbox-footer h2{font-family:var(--serif);font-size:25px;font-weight:400;letter-spacing:1px;margin:0 0 10px}.lightbox-footer p:last-child{font-size:11px;color:#b9b09e;margin:0;line-height:1.7}.image-credit{display:flex;flex-direction:column;gap:7px;align-items:flex-end;font-size:10px;color:#a99f8d}.image-credit a{text-decoration:underline;text-underline-offset:4px;line-height:1.7}.small-dialog{background:var(--mat);width:470px;max-width:calc(100% - 40px);padding:48px 36px 38px;box-shadow:0 15px 80px #16110f45}.small-dialog .close-dialog{position:absolute;top:8px;right:9px}.small-dialog h2{font-family:var(--serif);font-size:29px;font-weight:400;letter-spacing:1px;margin:0 0 22px}.small-dialog p{font-size:12px;line-height:2;color:var(--muted)}.text-button{display:inline-block;border-bottom:1px solid var(--line);font-size:12px;padding:9px 0;margin-top:20px}.credits-dialog{width:540px;max-height:85dvh;overflow-y:auto}.credits-dialog ul{list-style:none;padding:0;margin:22px 0 0}.credits-dialog li{border-bottom:1px solid var(--line);padding:13px 0;font-size:11px;display:flex;justify-content:space-between;gap:18px}.credits-dialog li a{text-decoration:underline;text-underline-offset:3px;text-align:right;line-height:1.7}.noscript-message{padding:20px;text-align:center}.lightbox :focus-visible{outline-color:#d9c29e}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.page-width{width:calc(100% - 64px)}.header{height:90px}.hero{padding-top:46px}.hero-intro{margin-bottom:32px}.hero h1{font-size:38px;letter-spacing:2px}.hero-photo{height:385px}.works{padding-top:80px}.gallery{gap:26px}.about{grid-template-columns:1fr 1.6fr;gap:25px}.about .about-lead{font-size:17px}}
@media(max-width:600px){html{scroll-padding-top:25px}.page-width{width:calc(100% - 40px)}.header{height:79px;position:relative}.wordmark{font-size:21px}.wordmark span{font-size:20px}.nav{display:none;position:absolute;top:78px;left:0;right:0;background:var(--paper);padding:17px 8px 22px;justify-content:space-between;z-index:10;border-bottom:1px solid var(--line)}.nav.open{display:flex}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:6px;width:36px;height:36px;padding:6px}.menu-toggle span{height:1px;background:var(--ink);width:23px;transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.hero{padding-top:39px}.hero-intro{margin-bottom:27px}.hero h1{font-size:clamp(24px,6.5vw,36px);letter-spacing:1.3px;white-space:nowrap}.hero-intro p{font-size:10px;letter-spacing:.6px;margin-top:13px}.photo-frame{padding:8px 8px 0}.hero-photo{height:390px;max-height:55dvh}.hero-photo img{object-position:center}.hero-caption{padding:17px 7px 18px;font-size:10px}.hero-caption>span{font-size:13px}.works{padding-top:62px;padding-bottom:48px}.works h2{font-size:26px;letter-spacing:2px}.quiet-label{font-size:10px;letter-spacing:.5px}.filters{margin-top:23px;gap:26px}.filter{font-size:13px;padding-bottom:14px}.filter:first-child{font-size:11px}.gallery{grid-template-columns:1fr;gap:27px;margin-top:28px}.work-photo{aspect-ratio:4/3}.work-meta{padding:18px 7px 22px}.work-title{font-size:16px}.work-year{font-size:10px}.gallery-note{font-size:9px;line-height:2;text-align:left;max-width:290px;margin-top:24px}.about{padding:39px 0;grid-template-columns:1fr;gap:24px}.about h2,.contact h2{font-size:23px}.about .about-lead{font-size:16px}.about p{font-size:12px;margin-top:12px}.contact{padding:36px 0 42px;align-items:flex-start;gap:18px}.contact p{font-size:10px;max-width:190px}.contact-button{font-size:11px;gap:18px;white-space:nowrap;padding-top:5px}.contact-button span{font-size:19px}.footer{font-size:9px;gap:17px;min-height:85px}.footer button{font-size:9px}.lightbox-header{height:62px;padding:0 17px}.lightbox-brand{font-size:17px}.lightbox-stage{padding:15px 12px 5px}.lightbox-stage img{width:100%;height:100%;object-fit:contain}.photo-prev,.photo-next{top:auto;bottom:5px;transform:none;background:#292720b3;width:36px;height:36px;font-size:19px}.photo-prev{left:18px}.photo-next{right:18px}.lightbox-footer{padding:21px 22px 26px;display:block}.lightbox-footer h2{font-size:23px}.lightbox-footer p:last-child{font-size:10px}.image-credit{align-items:flex-start;font-size:9px;margin-top:16px;gap:4px}.small-dialog{padding:44px 26px 31px}.small-dialog h2{font-size:25px}.credits-dialog li{font-size:10px}.credits-dialog li a{max-width:60%}}
.filters{overflow-x:auto;scrollbar-width:thin}.filter{flex-shrink:0}.work-title,.hero-caption>span{overflow-wrap:anywhere}.work-year{flex-shrink:0}
.upload-entry{display:inline-flex;align-items:center;gap:5px;border:1px solid #c8bba7;padding:9px 14px;font-size:12px;letter-spacing:.5px;white-space:nowrap}.upload-entry span{font-size:17px;line-height:1}.upload-entry:hover{background:#f9f5ec80;border-color:var(--accent)}.portfolio-status{font-size:12px;color:#726147;line-height:1.8;margin:21px 0 -10px}.upload-dialog{width:740px;max-width:calc(100% - 40px);max-height:90dvh;overflow-y:auto;background:var(--mat);padding:29px 34px 30px;box-shadow:0 16px 80px #1c140c45}.upload-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.upload-dialog h2{font-family:var(--serif);font-size:28px;font-weight:400;letter-spacing:2px;margin:0}.upload-dialog .icon-button{flex-shrink:0}.storage-note{font-size:11px;line-height:1.9;color:#867a69;margin:13px 0 25px;max-width:570px}.upload-tabs{display:flex;gap:28px;border-bottom:1px solid var(--line);margin-bottom:23px}.upload-tabs button{font-size:12px;color:var(--muted);padding:0 0 14px;position:relative}.upload-tabs [aria-selected=true]{color:var(--ink)}.upload-tabs [aria-selected=true]:after{content:"";height:1px;background:var(--ink);position:absolute;bottom:-1px;left:0;right:0}.upload-tabs span{font-size:10px;margin-left:5px;color:var(--muted)}.upload-message{font-size:12px;line-height:1.8;white-space:pre-line;overflow-wrap:anywhere;color:#6f674d;border-left:2px solid #b6a48a;padding:9px 13px;background:#eee7db80;margin:0 0 20px}.upload-message.is-error{color:#96553d;border-color:#b57e60}.drop-zone{border:1px dashed #c9bda9;min-height:171px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:23px 16px;text-align:center;transition:background .2s,border-color .2s}.drop-zone.is-dragging{background:#e8ddca;border-color:var(--accent)}.drop-zone p{font-family:var(--serif);font-size:19px;margin:0;letter-spacing:1px}.drop-zone>span{font-size:10px;color:var(--muted);line-height:1.8}.choose-photos{font-size:12px;padding:8px 18px;border:1px solid #b9a78d;background:#f1e8d9}.choose-photos:hover{background:#e8dbc6}.upload-year-field{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:23px 0}.upload-year-field label{font-size:12px}.upload-year-field>span{font-size:10px;color:var(--muted)}.upload-dialog input{font:inherit;max-width:100%;color:var(--ink);background:#fffdf7;border:1px solid #d7cdbd;padding:9px 10px;border-radius:0;min-width:0;outline-offset:3px}.upload-dialog input:focus-visible{outline:1px solid var(--accent)}.upload-dialog input[type=number]{width:87px;font-size:12px}.upload-actions{display:flex;justify-content:space-between;align-items:center;gap:18px;border-top:1px solid var(--line);padding-top:20px;margin-top:24px}.upload-actions>span{font-size:11px;color:var(--muted);line-height:1.8}.save-photos{font-size:12px;padding:12px 20px;background:#75634d;color:#fffaf0;white-space:nowrap}.save-photos:hover{background:#62513d}.upload-dialog button:disabled{cursor:default;opacity:.45}.upload-dialog input:disabled{opacity:.6}.pending-photo{display:flex;align-items:center;gap:14px;border-top:1px solid #ded5c8;padding:15px 0}.pending-photo>img,.managed-photo>img{object-fit:cover;flex-shrink:0;background:#e3d9c9}.pending-fields{flex:1;min-width:0;display:grid;gap:6px}.pending-fields label,.managed-fields label{font-size:10px;color:var(--muted)}.pending-fields input{font-size:13px;width:100%}.pending-fields>span{font-size:10px;color:var(--muted)}.remove-photo{font-size:11px;color:#8c7761;padding:10px 0 10px 10px}.manage-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:21px}.manage-heading>span{font-size:11px;color:var(--muted);line-height:1.8;max-width:340px}.manage-heading .text-button{margin:0;flex-shrink:0;font-size:11px}.managed-photo{display:flex;align-items:center;gap:14px;border-top:1px solid var(--line);padding:18px 0}.managed-fields{display:grid;grid-template-columns:minmax(0,1fr) 87px;gap:10px;flex:1;min-width:0}.managed-fields label{display:flex;flex-direction:column;gap:7px}.managed-fields input{width:100%;font-size:12px}.managed-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px;min-width:54px}.managed-actions button{font-size:11px;padding:3px 0;text-decoration:underline;text-decoration-color:#c4b49d;text-underline-offset:4px;white-space:nowrap}.managed-actions button:hover{color:var(--accent)}.hidden-label{font-size:10px;color:var(--muted)}.managed-photo.is-hidden>img{opacity:.45}#manage-empty{font-family:var(--serif);font-size:15px;color:var(--muted);text-align:center;line-height:1.8;padding:40px 0}
@media(max-width:600px){.upload-entry{font-size:11px;padding:8px 10px}.upload-dialog{max-width:calc(100% - 24px);max-height:92dvh;padding:20px 20px 24px}.upload-dialog h2{font-size:23px;letter-spacing:1px}.upload-dialog .icon-button{width:34px;height:34px}.storage-note{font-size:10px;margin:13px 0 22px}.drop-zone{padding:22px 12px;min-height:160px}.drop-zone p{font-size:18px}.drop-zone>span{font-size:9px;max-width:220px}.upload-year-field{gap:11px}.upload-year-field>span{width:100%;font-size:10px}.pending-photo{gap:10px}.pending-photo>img{width:45px;height:59px}.pending-fields input{font-size:13px;padding:8px}.remove-photo{font-size:10px}.upload-actions{gap:12px}.upload-actions>span{font-size:10px;max-width:130px}.save-photos{font-size:11px;padding:12px 13px}.manage-heading{align-items:flex-start;gap:12px}.manage-heading>span{font-size:10px;max-width:165px}.manage-heading .text-button{font-size:10px}.managed-photo{display:grid;grid-template-columns:43px minmax(0,1fr);column-gap:11px;row-gap:12px}.managed-photo>img{width:43px;height:61px}.managed-fields{grid-template-columns:minmax(0,1fr) 70px;gap:8px}.managed-fields input[type=number]{width:70px}.managed-fields input{padding:8px 6px}.managed-actions{grid-column:2;flex-direction:row;align-items:center;gap:20px}.portfolio-status{font-size:11px}}
.subcategory-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;margin-top:15px;min-width:0}.subcategory-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;min-width:0;max-width:100%;padding:3px 2px 9px}.subcategory-filter{flex:0 1 auto;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left;font-size:12px;line-height:1.7;letter-spacing:.4px;color:var(--muted);padding:3px 0;position:relative}.subcategory-filter[aria-pressed=true]{color:var(--ink)}.subcategory-filter[aria-pressed=true]:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#9e8d76}.subcategory-filter:hover,.edit-categories:hover{color:var(--accent)}.edit-categories{align-self:start;white-space:nowrap;font-size:11px;color:#82725e;padding:7px 0 10px;border-bottom:1px solid transparent}.edit-categories:hover{border-bottom-color:var(--line)}.gallery-empty{font-family:var(--serif);font-size:16px;line-height:1.9;color:var(--muted);text-align:center;padding:48px 20px;margin:30px 0 0;border-top:1px solid #d8cebe}
.category-dialog{width:580px;max-height:90dvh;overflow-y:auto;padding:27px 30px 30px}.category-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.category-dialog-head h2{font-size:26px;letter-spacing:1px;margin:0}.category-dialog-head .icon-button{flex-shrink:0;width:36px;height:36px}.category-dialog .category-help{font-size:11px;line-height:1.9;margin:13px 0 24px}.category-rows{display:grid;gap:11px}.category-edit-row{display:flex;align-items:center;gap:10px;min-width:0}.category-dialog input{font:inherit;font-size:12px;min-width:0;max-width:100%;color:var(--ink);background:#fffdf7;border:1px solid #d7cdbd;border-radius:0;padding:10px 11px;outline-offset:3px}.category-dialog input:focus-visible{outline:1px solid var(--accent)}.category-name{flex:1;width:0}.category-order{display:flex;align-items:center;flex-shrink:0;gap:2px}.category-order button{width:29px;height:34px;color:#82725e;font-size:15px;line-height:1}.category-order button:hover{background:#e9decc80;color:var(--ink)}.remove-category{font-size:11px;color:#947962;padding:9px 0 9px 5px;white-space:nowrap;flex-shrink:0}.remove-category:hover{color:#92533b}.category-add{display:flex;align-items:stretch;gap:11px;margin-top:19px}.category-add input{flex:1;width:0}.category-add button{flex-shrink:0;font-size:12px;border:1px solid #c9baa4;padding:9px 15px;background:#f1e8d980;white-space:nowrap}.category-add button:hover{background:#e8dbc6}.category-dialog #category-message{margin:19px 0 0;line-height:1.8}.category-dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid var(--line);margin-top:25px;padding-top:20px}.category-dialog-actions>span{font-size:11px;line-height:1.8;color:var(--muted)}.save-categories{font-size:12px;padding:12px 20px;white-space:nowrap;background:#75634d;color:#fffaf0}.save-categories:hover{background:#62513d}.category-dialog button:disabled,.category-dialog input:disabled{opacity:.45;cursor:default}.category-dialog button:disabled:hover{background:inherit;color:inherit}.category-dialog .save-categories:disabled:hover{background:#75634d;color:#fffaf0}
.upload-category-field{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-8px 0 16px}.upload-category-field label{font-size:12px}.upload-category-field>span{font-size:10px;color:var(--muted);line-height:1.8}.upload-place-field input{width:250px;font-size:12px}.location-hint{font-size:10px;line-height:1.9;color:var(--muted);margin:0 0 22px;max-width:600px}.location-hint a{white-space:nowrap;text-decoration:underline;text-underline-offset:3px}.pending-fields .location-source{line-height:1.7}.managed-fields{grid-template-columns:minmax(0,1fr) 80px minmax(100px,.8fr)}.managed-fields input[type=number]{width:80px}.managed-category{min-width:0}
@media(max-width:600px){.subcategory-bar{gap:12px;margin-top:12px}.subcategory-filters{gap:7px 18px;padding-bottom:8px}.subcategory-filter{font-size:11px}.edit-categories{font-size:10px;padding-top:6px}.gallery-empty{font-size:14px;padding:36px 12px;margin-top:24px}.category-dialog{max-width:calc(100% - 24px);max-height:92dvh;padding:20px 20px 24px}.category-dialog-head h2{font-size:23px}.category-dialog .category-help{font-size:10px;margin-bottom:21px}.category-edit-row{gap:7px}.category-dialog input{font-size:12px;padding:10px 9px}.category-order{gap:0}.category-order button{width:24px;height:34px;font-size:14px}.remove-category{font-size:10px;padding-left:2px}.category-add{gap:9px}.category-add button{font-size:11px;padding:9px 12px}.category-dialog-actions{margin-top:23px;padding-top:19px;gap:12px}.category-dialog-actions>span{font-size:10px}.save-categories{font-size:11px;padding:12px 16px}.upload-category-field{gap:11px}.upload-category-field>span{width:100%;font-size:10px}#upload-category{max-width:calc(100% - 110px)}.managed-fields{grid-template-columns:70px minmax(0,1fr);gap:10px 8px}.managed-fields>label:first-child{grid-column:1/-1}.managed-fields input[type=number]{width:70px}.managed-fields select{font-size:12px;padding:8px 19px 8px 6px}}
.auto-name-option{margin:20px 0 22px;padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.auto-name-option label{font-size:12px;display:flex;align-items:center;gap:8px;line-height:1.8}.upload-dialog .auto-name-option input[type=checkbox]{width:14px;height:14px;max-width:none;margin:0;padding:0;accent-color:var(--accent);flex-shrink:0}.auto-name-option p{font-size:10px;color:var(--muted);line-height:1.8;margin:7px 0 0;max-width:535px}.naming-progress{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:-10px 0 20px;font-size:10px;color:var(--muted)}.naming-progress button{font-size:11px;padding:5px 0;color:var(--accent);text-decoration:underline;text-underline-offset:4px}.pending-photo-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex-shrink:0}.pending-photo-actions .remove-photo{padding:6px 0}.another-name{font-size:10px;padding:6px 0;color:var(--accent);white-space:nowrap;text-decoration:underline;text-underline-offset:4px}.pending-fields .naming-note{color:#8a7050;line-height:1.7}.managed-actions{min-width:56px}
@media(max-width:600px){.auto-name-option label{font-size:11px}.auto-name-option p{font-size:9px}.naming-progress{font-size:9px}.naming-progress button{font-size:10px}.pending-photo-actions{gap:5px}.another-name{font-size:9px}.pending-fields .naming-note{font-size:9px}}
.contact-links{display:flex;flex-direction:column;gap:8px;min-width:216px;flex-shrink:0}.contact-links .contact-button{justify-content:space-between;gap:22px;padding:8px 0}
@media(max-width:600px){.contact{flex-direction:column;gap:22px}.contact-links{width:100%;min-width:0;gap:6px}.contact-links .contact-button{font-size:12px;padding:10px 0;white-space:normal;overflow-wrap:anywhere}}
.photography-home{border-top:1px solid var(--line);padding:44px 0 48px;display:flex;flex-direction:column;align-items:flex-start;gap:22px}.photography-home h2{font-family:var(--serif);font-weight:400;font-size:25px;letter-spacing:2px;margin:0}.photography-home-link{width:216px;max-width:100%;justify-content:space-between;padding:8px 0}
@media(max-width:600px){.photography-home{padding:36px 0 42px;gap:18px}.photography-home h2{font-size:23px}.photography-home-link{width:100%;font-size:12px;padding:10px 0}}
.hero-showcase{min-width:0}
.hero-track{position:relative;display:flex;gap:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding:0;scroll-padding-inline:0}
.hero-track::-webkit-scrollbar{display:none}
.hero-track:focus-visible{outline:1px solid var(--accent);outline-offset:6px}
.hero-slide{flex:0 0 100%;min-width:0;margin:0;scroll-snap-align:start}
.hero-slide[data-clone]{pointer-events:none}
.hero-slide .hero-photo{height:auto;aspect-ratio:16/10;max-height:48dvh;min-height:0;background:var(--mat);display:flex;align-items:center;justify-content:center}
.hero-slide .hero-photo img{object-fit:contain;object-position:center}
.hero-slide .hero-photo:hover img{transform:none}
.hero-slide .hero-caption{gap:18px;padding:14px 9px 16px}
.hero-caption>span.hero-year{font-family:var(--sans);font-size:10px;letter-spacing:1px;color:var(--muted);flex-shrink:0}
.hero-controls{display:flex;align-items:center;gap:24px;min-width:0;margin-top:11px;padding:0 2px}
.hero-scroll-info{display:flex;align-items:center;gap:22px;margin-right:auto;min-width:0;color:var(--muted)}
#hero-position{font-size:11px;letter-spacing:1.6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.hero-hint{font-size:11px;letter-spacing:.6px;line-height:1.8}
.hero-play{padding:8px 0;font-size:11px;white-space:nowrap;color:var(--muted);text-decoration:underline;text-decoration-color:#c4b49d;text-underline-offset:4px}
.hero-play:hover{color:var(--ink)}
.hero-step-group{display:flex;gap:7px;flex-shrink:0}
.hero-step{width:44px;height:44px;padding:0;border:1px solid #c6bba9;font-size:20px;line-height:1;background:#f9f5ec55}
.hero-step:hover:not(:disabled){background:var(--mat);border-color:#a9957a}
.hero-step:disabled{cursor:default;opacity:.3}
.hero-works-link{font-size:11px;line-height:1.8;letter-spacing:.5px;color:var(--muted);white-space:nowrap}
.hero-works-link:hover{color:var(--ink)}
.hero-showcase.is-single .hero-slide{flex-basis:100%}
.hero-showcase.is-single .hero-hint{display:none}
@media(max-width:600px){.hero-controls{gap:16px;margin-top:9px;flex-wrap:wrap}.hero-scroll-info{gap:12px}.hero-hint,.hero-play{font-size:9px;letter-spacing:.2px}#hero-position{font-size:10px;letter-spacing:1px}.hero-step-group{gap:6px}.hero-step{width:38px;height:40px;font-size:18px}.hero-works-link{width:100%;text-align:right;font-size:10px}.hero-caption>span.hero-year{font-size:9px}.hero-slide .hero-caption{padding:12px 5px 13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Photograph-only zoom: clip the transformed image, keeping all controls stationary. */
.lightbox{overflow:hidden;overscroll-behavior:none;touch-action:none}
.lightbox-stage{isolation:isolate}
.photo-viewport{position:absolute;inset:24px 80px 10px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;cursor:zoom-in}
.lightbox-stage .photo-viewport img{width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;object-position:center;transform-origin:center;pointer-events:none;-webkit-user-drag:none}
.photo-viewport.is-zoomed{cursor:grab}
.photo-viewport.is-dragging{cursor:grabbing}
.photo-prev,.photo-next{z-index:1}
.photo-zoom-bar{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:18px;padding:8px 24px 0}
.photo-zoom-controls{display:flex;align-items:center;gap:6px}
.photo-zoom-controls button{min-width:36px;min-height:36px;border:1px solid #b6ad9b38;border-radius:3px;font-size:20px}
.photo-zoom-controls button:hover{background:#cbb89a1c}
.photo-zoom-controls button:disabled{opacity:.3;cursor:default}
#photo-zoom-reset{font-size:11px;padding-inline:10px;margin-left:5px}
#photo-zoom-level{font-size:11px;font-variant-numeric:tabular-nums;min-width:48px;text-align:center;color:#d9cfbd}
#photo-zoom-help{margin:0;color:#b6ad9b;font-size:10px;line-height:1.7}
@media(max-width:600px){.photo-viewport{inset:15px 12px 49px}.photo-prev,.photo-next{bottom:5px}.photo-zoom-bar{flex-direction:column;gap:6px;padding:9px 16px 0}.photo-zoom-controls button{min-width:40px;min-height:40px}.lightbox-footer{padding-top:16px}}

/* Keep the archive compact while every photograph remains available through paging. */
.gallery-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:27px;padding-top:18px;border-top:1px solid var(--line)}
#gallery-page-status{font-size:11px;color:var(--muted);margin:0;line-height:1.8;white-space:nowrap}
.gallery-page-controls{display:flex;align-items:center;gap:13px}
.gallery-page-controls button{font-size:11px;min-height:42px;border:1px solid #c8bba7;padding:9px 12px;white-space:nowrap}
.gallery-page-controls button:hover:not(:disabled){background:#f9f5ec80;border-color:var(--accent)}
.gallery-page-controls button:disabled{opacity:.35;cursor:default}
#gallery-page-number{font-size:11px;letter-spacing:1px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}
@media(max-width:600px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.work-meta{gap:5px;padding:13px 3px 15px}.work-title{font-size:14px;letter-spacing:.4px}.work-year{font-size:9px;letter-spacing:.3px}.gallery-pagination{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;padding-top:14px}#gallery-page-status{width:100%;text-align:center;font-size:10px}.gallery-page-controls{gap:16px}.gallery-page-controls button{min-height:44px;padding:10px 14px}.gallery-note{max-width:none;text-align:center}}

/* Location-wide display years share the same originals across archive views. */
.category-fields{flex:1;min-width:0;display:grid;gap:7px}.category-fields .category-name{width:100%}.category-edit-row{align-items:flex-start}.category-years-label{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted);white-space:nowrap}.category-years-label .category-years{flex:1;width:0;font-size:10px;padding:7px 8px}.category-order,.remove-category{margin-top:2px}.category-rows{gap:18px}

.cloud-portfolio:not(.is-owner) #upload-entry,.cloud-portfolio:not(.is-owner) #edit-categories{display:none!important}
.footer{flex-wrap:wrap}.footer #owner-login,.footer #owner-logout{font-size:10px;color:var(--muted)}

.cloud-migrate{padding:14px 0;border-bottom:1px solid var(--line);margin-bottom:20px;font-size:11px;color:var(--muted)}.cloud-migrate summary{cursor:pointer}.cloud-migrate p{line-height:1.8}.cloud-migrate button{padding:8px 0;text-decoration:underline;text-underline-offset:4px}
