/* Owner-approved raster wordmark, cropped from the provided artwork. */
.wordmark{display:flex;align-items:center;flex-shrink:0;width:clamp(175px,18vw,260px);min-height:44px;letter-spacing:normal;font-size:inherit}
.wordmark img{display:block;width:100%;height:auto}
.site-header nav{position:relative;z-index:20}
.work-nav{position:relative;display:flex;align-items:center;align-self:stretch}
.work-subnav{position:absolute;top:100%;left:-16px;min-width:114px;padding:5px 16px 12px;background:var(--paper);box-shadow:0 10px 18px #25252108}
.work-subnav[hidden]{display:none}
.work-subnav a{min-height:44px;white-space:nowrap;letter-spacing:1.5px}
.work-subnav a[aria-current=page]{border-bottom:0;color:var(--muted)}
.work-toggle{display:none;align-items:center;justify-content:center;background:transparent;border:0;color:var(--ink);padding:0;width:24px;min-height:44px}
.work-toggle svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1}
.work-toggle{-webkit-tap-highlight-color:transparent}
@media(hover:none){.work-toggle{display:flex}.work-subnav{left:-12px}}
@media(max-width:700px){.wordmark{width:clamp(128px,34vw,190px)}.site-header{gap:12px}.work-subnav{min-width:100px}.work-subnav a{font-size:10px}.site-header nav{gap:8px}}
@media(max-width:360px){.site-header{padding-inline:14px;gap:8px}.wordmark{width:118px}.site-header nav{gap:6px}.site-header nav a{letter-spacing:.6px}.social{width:20px}.work-toggle{width:20px}}

/* Quiet editorial rhythm: warm paper, fine rules, and distinct type levels. */
:root{--paper:#faf8f3;--ink:#292b27;--muted:#89877e;--rule:#e3dfd5;--accent:#a29174;--space:clamp(24px,5vw,96px);--serif:'Noto Serif TC','Yu Mincho',Georgia,serif;font-family:'Noto Sans TC','Yu Gothic','Microsoft JhengHei',sans-serif;font-weight:400;letter-spacing:.035em}
.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}
.site-header{min-height:114px;padding-block:30px;gap:24px}
.wordmark{width:clamp(170px,17vw,240px)}
.site-header nav{gap:clamp(18px,2.3vw,38px)}
.site-header nav a{font-size:10px;letter-spacing:.16em;font-weight:400}
.site-header nav a[aria-current=page]{border-bottom-color:#a29174}
.work-subnav{padding-top:10px;padding-bottom:10px;box-shadow:none;border-bottom:1px solid var(--rule)}
.public-gallery{padding-top:clamp(25px,5vh,65px);max-width:1920px;margin:auto}
.wall{padding-top:10px;gap:clamp(54px,8vw,144px) clamp(30px,6vw,110px)}
.collections{gap:110px 9vw;max-width:1380px;margin:0 auto}
.collection img{aspect-ratio:unset;max-height:68vh;object-fit:contain}
.collection h2{font-family:var(--serif);font-size:20px;letter-spacing:.04em;margin-top:22px}
.empty{min-height:50vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px;color:var(--muted)}
.empty-rule{width:32px;height:1px;background:var(--accent)}
.empty small{font-size:11px;letter-spacing:.14em}
.home{height:calc(100svh - 114px);min-height:420px;padding:14px var(--space) 26px;display:flex;flex-direction:column;gap:20px}
.exhibition{flex:1;min-height:240px;max-height:calc(100svh - 210px);width:min(100%,1280px);margin:0 auto}
.exhibition button{padding:3vh 3vw;transition:opacity 2s ease-in-out}
.exhibition button:not(.active){pointer-events:none}
.exhibition img{object-fit:contain}
.home-footer{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1280px;margin:0 auto;min-height:48px}
.home-footer .eyebrow{font-size:9px;letter-spacing:.2em;color:#9b978e}
.slide-controls{display:flex;gap:2px;align-items:center}
.slide-dot,.slide-pause{border:0;background:none;width:44px;height:44px;display:grid;place-items:center;color:#a19c91;padding:0}
.slide-dot span{width:16px;height:1px;background:#d2cdc2;transition:background .5s,width .5s}
.slide-dot.active span{width:24px;background:#777060}
.slide-pause{font-size:11px;letter-spacing:0}
.studio-heading{display:flex;justify-content:space-between;align-items:center;padding:32px 0 26px;border-top:1px solid var(--rule)}
.studio-heading a,.text-link{font-size:11px;letter-spacing:.08em;color:#6b695f;border-bottom:1px solid #c4bcae;padding:8px 0}
.admin-shell{max-width:1560px;padding-bottom:90px}
.admin-nav{gap:clamp(18px,2.8vw,42px);padding:0 0 8px;margin:0 0 44px;align-items:center}
.admin-nav a{font-size:12px;letter-spacing:.08em;min-height:44px;color:#858277;border-bottom:1px solid transparent}
.admin-nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:0 0 22px}
.section-heading h1,.admin h1,.login h1{font-family:var(--serif);font-size:clamp(27px,3vw,36px);font-weight:400;letter-spacing:.07em;margin:14px 0 10px}
.section-heading .eyebrow,.studio-heading .eyebrow{font-size:9px;letter-spacing:.2em;color:#9a9589}
.muted{font-size:12px;line-height:1.9;letter-spacing:.035em}
.library-count{font-family:Georgia,serif;font-size:36px;color:#68675f;display:grid;gap:5px;text-align:right}
.library-count small{font-family:'Noto Sans TC',sans-serif;font-size:10px;letter-spacing:.12em;color:var(--muted)}
.panel{border:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:28px 0;margin:20px 0 30px}
.panel h2{font-family:var(--serif);font-size:21px;font-weight:400;margin:0 0 20px;letter-spacing:.08em}
.upload-panel{background:#f1eee6;padding:26px 30px;border:0}
.upload-area{border:0;padding:12px 0;line-height:1.8;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.upload-title{font-family:var(--serif);font-size:20px;color:var(--ink);letter-spacing:.07em}
.upload-area input{border:0;padding:10px 0;background:none;max-width:100%;font-size:11px}
input::file-selector-button{font-family:inherit;background:transparent;border:1px solid #bbb3a4;border-radius:0;padding:10px 18px;margin-right:15px;color:#5f5b50;cursor:pointer}
input,select,textarea{border-color:var(--rule);background:#fffdf9;border-radius:0;min-height:44px;font-size:12px;letter-spacing:.035em}
input[type=checkbox]{min-height:0;width:15px;height:15px;accent-color:#8c7f68}
label{gap:10px;font-size:11px;letter-spacing:.055em}
.toolbar{padding:20px 0;gap:13px;align-items:end;border-bottom:1px solid var(--rule);margin:16px 0 28px}
.toolbar label{margin-right:auto}
.action{font-size:12px;letter-spacing:.07em;background:#34362f;border-color:#34362f;padding:12px 22px;transition:background .2s,color .2s}
.action:hover{background:#56584f}
.action.secondary{background:transparent;border-color:#cfc8b9;color:#655f52}
.action.secondary:hover{background:#ece7dc}
.admin-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:32px 24px}
.admin-photo{border:0;padding:0;background:transparent}
.admin-photo.selected{outline:1px solid var(--accent);outline-offset:8px}
.admin-photo .select-label{font-size:10px;padding:0 0 12px}
.admin-photo img{height:230px;background:#eeebe3;padding:14px}
.photo-details{padding:15px 0 5px;display:flex;flex-direction:column;gap:7px}
.admin-photo .filename{font-size:11px;color:#5c5d55;line-height:1.6}
.admin-photo small{color:#979184;font-size:10px;line-height:1.7}
.badge{font-size:10px;letter-spacing:.07em;color:#948572}
.status-published{color:#55674b}.status-draft{color:#948572}.status-ignored{color:#94938c}
.admin-photo button{border:0;border-bottom:1px solid var(--rule);background:none;color:#5a5c53;padding:10px 0;align-self:flex-start;letter-spacing:.04em;font-size:11px}
.login{max-width:420px;padding:40px 0;margin:8vh auto}
.login .action{width:100%;margin-top:16px}
dialog{border:1px solid var(--rule);padding:35px;max-height:88svh;overflow:auto}
dialog h2{font-family:var(--serif);font-weight:400;font-size:25px;letter-spacing:.06em}
.list-row{padding:25px 0;gap:25px}
.home-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);margin-top:16px}
.editor-section-label{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.08em;padding:18px 0;border-top:1px solid var(--rule);margin:18px 0}
.home-sequence{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.home-slot{min-width:0;position:relative;background:#f0ece3;padding:18px 14px 0}
.slot-number{position:absolute;top:8px;left:10px;font-family:Georgia,serif;font-size:12px;color:#a69a84}
.home-slot img{width:100%;height:170px;object-fit:contain;padding:10px 4px}
.slot-actions{display:flex;align-items:center;gap:3px;min-height:48px}
.slot-actions span{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;color:#888074}
.slot-actions button{border:0;background:none;color:#7d7568;padding:0;width:30px;min-height:44px}
.composition-empty{grid-column:1/-1;min-height:240px;border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--muted);padding:25px;text-align:center}
.composition-empty span{font-family:Georgia,serif;font-size:27px;color:#bbb09c;letter-spacing:.08em}.composition-empty p{font-size:11px;line-height:1.8}
.home-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.home-choice{min-width:0;text-align:left;padding:8px;background:none;border:1px solid transparent;display:flex;flex-direction:column;gap:7px}
.home-choice.chosen{border-color:#a89a82;background:#f0ece3}
.home-choice img{width:100%;height:100px;object-fit:contain;background:#efece5}
.home-choice span{font-size:10px;overflow-wrap:anywhere;color:#68665c;line-height:1.6}
.home-choice small{font-size:9px;color:#9a8f7c}
@media(min-width:2400px){.site-header{min-height:150px}.site-header nav a{font-size:16px}.wordmark{width:320px}.home{height:calc(100svh - 150px)}.exhibition{width:min(80%,2200px);max-height:calc(100svh - 300px)}.home-footer{max-width:2200px}.home-footer .eyebrow{font-size:14px}.slide-dot,.slide-pause{width:60px;height:60px}.slide-dot span{width:24px}.slide-dot.active span{width:34px}}
@media(max-width:850px){.home-editor-layout{grid-template-columns:1fr}.home-source{order:-1}.home-choices{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-nav{gap:20px;margin-bottom:32px}.admin-nav a{font-size:11px}.toolbar label{width:100%}}
@media(max-width:700px){.site-header{min-height:92px;padding:23px 20px;gap:12px}.wordmark{width:clamp(126px,34vw,180px)}.site-header nav{gap:9px}.site-header nav a{font-size:9px;letter-spacing:.08em}.home{height:calc(100svh - 92px);padding:10px 24px 20px;gap:14px;min-height:350px}.exhibition{max-height:none;min-height:220px}.exhibition button{padding:7vh 0}.home-footer{justify-content:center}.home-footer .eyebrow{display:none}.public-gallery{padding-top:24px}.collections{gap:70px}.collection h2{font-size:18px}.studio-heading{padding:20px 0}.studio-heading .eyebrow{font-size:8px}.studio-heading a{font-size:10px}.admin-nav{gap:8px 20px}.admin-nav a{font-size:11px;letter-spacing:.035em}.section-heading{align-items:flex-start}.section-heading h1,.admin h1{font-size:27px}.section-heading .muted{font-size:11px}.library-count{font-size:28px}.upload-panel{padding:18px}.upload-title{font-size:18px}.toolbar{gap:9px}.toolbar .action{padding:10px 12px;font-size:11px}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.admin-photo img{height:170px;padding:10px}.admin-photo.selected{outline-offset:4px}.home-choices{grid-template-columns:repeat(3,minmax(0,1fr))}.home-choice img{height:85px}.home-slot img{height:130px}.home-sequence{gap:12px}.slot-actions span{display:none}.slot-actions{justify-content:center}.form-row{gap:18px}dialog{padding:24px}.login{padding:35px 0;margin:6vh auto}}
@media(max-width:360px){.site-header{padding-inline:14px;gap:8px}.wordmark{width:118px}.site-header nav{gap:6px}.site-header nav a{letter-spacing:.06em}.home-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-photo img{height:140px}}
@media(prefers-reduced-motion:reduce){.exhibition button,.slide-dot span{transition:none}}

.copyright{display:flex;align-items:center;gap:14px;color:#969185;font-size:9px;font-weight:400;letter-spacing:.09em;line-height:1.8}
.copyright-owner{white-space:nowrap}
.copyright-brand{font-family:Georgia,'Times New Roman',serif;font-size:11px;letter-spacing:.1em;margin-left:5px;color:#777164}
.copyright-divider{width:22px;height:1px;background:#cfc6b6}
.copyright-rights{font-size:8px;letter-spacing:.12em}
.home>.empty{flex:1;min-height:0}
@media(min-width:2400px){.copyright{font-size:13px;gap:20px}.copyright-brand{font-size:15px}.copyright-rights{font-size:12px}.copyright-divider{width:30px}}
@media(max-width:700px){.home-footer{flex-direction:column;gap:6px}.home-footer .slide-controls{order:0}.home-footer .copyright{order:1;justify-content:center;gap:10px;font-size:8px}.copyright-brand{font-size:10px}.copyright-rights{font-size:7px;letter-spacing:.06em}.copyright-divider{width:12px}}

.placement-summary{border-top:1px solid var(--rule);margin-top:5px;padding-top:12px;display:grid;gap:8px}
/* Unified collection typography and image-edge alignment, without cropping. */
.collections{grid-template-columns:repeat(2,minmax(0,1fr));gap:96px 7vw;max-width:1440px;align-items:start}
.collections:has(>.collection:only-child){grid-template-columns:minmax(0,650px);justify-content:center}
.collection{display:flex;flex-direction:column;align-items:flex-start;min-width:0;width:min(100%,calc(68svh * var(--cover-ratio,1)))}
.collection:only-child{justify-self:center}
.collection:nth-child(even){padding-top:0}
.collection img{width:100%;height:auto;max-height:none;display:block;aspect-ratio:unset}
.collection h2{width:100%;font-family:'Yu Mincho','Noto Serif TC','PMingLiU',Georgia,serif;font-weight:400;font-size:clamp(20px,1.8vw,30px);letter-spacing:.1em;line-height:1.6;margin:22px 0 0;padding-top:16px;border-top:1px solid var(--rule)}
.public-gallery{padding-top:clamp(28px,5vh,64px);padding-bottom:100px}
.photo-tile{position:relative;overflow:hidden}
.expand-mark{position:absolute;right:14px;bottom:14px;width:34px;height:34px;display:grid;place-items:center;color:white;background:#0003;opacity:0;transition:opacity .25s;pointer-events:none}
.expand-mark svg,.restore svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.2}
@media(hover:hover){.photo-tile:hover .expand-mark{opacity:1}}
.photo-tile:focus-visible .expand-mark{opacity:1}
.exhibition button{cursor:default}
/* Explicitly positioned image avoids intrinsic CSS grid tracks overflowing FIT. */
.image-stage{display:block}
.image-stage img{position:absolute;left:50%;top:50%;max-width:none;max-height:none;object-fit:contain;touch-action:none}
.image-stage img[hidden]{display:none}
.v-loading{bottom:28px;text-align:center;max-width:65vw;line-height:1.8;color:#ddd;font-size:11px;background:#111a;padding:4px 10px}
.v-loading:empty{display:none}
.v-loading button{margin-left:12px;border:0;border-bottom:1px solid #aaa;background:transparent;color:inherit;padding:8px;min-height:44px}
.viewer.inspect-mode .image-stage img{cursor:grab}.viewer.inspect-mode .image-stage:active img{cursor:grabbing}
.field-error{font-size:12px;color:#a15e44;line-height:1.8}.field-error:empty{display:none}
.logout-button{border:0;border-bottom:1px solid var(--rule);background:none;font-size:11px;color:var(--muted);padding:10px;min-height:44px}
.studio-heading a{margin-left:auto}.studio-heading{gap:20px}
.pick-link-row{padding:28px 0;border-bottom:1px solid var(--rule)}.pick-link-row h2,.client-pick h1{font-family:var(--serif);font-weight:400;letter-spacing:.08em;line-height:1.7}
.pick-link-row h2{font-size:23px}.pick-link-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}
.pick-link-actions a{display:flex;align-items:center;text-decoration:none}
.client-pick{max-width:1600px;margin:auto;padding-top:36px}
.client-pick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 24px}
.client-photo{min-width:0}.client-photo .photo-tile{display:flex;align-items:center;justify-content:center;width:100%;height:300px;background:#eeeae255}
.client-photo .photo-tile img{width:auto;max-width:100%;max-height:100%;height:auto!important;object-fit:contain}
.client-photo.selected{outline:1px solid var(--accent);outline-offset:8px}
.client-photo .select-label{display:flex;align-items:center;padding-top:15px;gap:12px;overflow-wrap:anywhere;font-size:11px}
.client-pick-toolbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:20px 0;background:var(--paper);border-bottom:1px solid var(--rule);margin-bottom:30px}
.client-pick-toolbar p{flex-basis:100%;margin:0}.client-pick-toolbar button[hidden]{display:none}
.viewer .inspect:disabled{display:none}
@media(max-width:850px){.client-pick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.client-photo .photo-tile{height:220px}}
@media(max-width:700px){.client-pick-toolbar .action{font-size:11px;padding:10px 12px}.client-pick-grid{gap:26px 18px}.client-photo .photo-tile{height:185px}.pick-link-actions .action{font-size:11px;padding:10px 12px}.studio-heading{gap:10px}}
.collection-dialog{width:760px}
.cover-choice{display:flex;flex-wrap:wrap;align-items:center;gap:16px;min-height:100px}
.cover-choice img{width:85px;height:105px;object-fit:contain;background:#efebe2}
.photo-picker{width:1000px;max-width:94vw}
.picker-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;max-height:49svh;overflow:auto;padding:10px 6px}
.picker-photo{position:relative;border:1px solid transparent;padding:10px;min-width:0;cursor:pointer;background:#efebe255}
.picker-photo.chosen{border-color:var(--accent);background:#eee8dc}
.picker-photo img{width:100%;height:145px;object-fit:contain}
.picker-photo span{font-size:10px;overflow-wrap:anywhere;line-height:1.6}.picker-photo small{font-size:10px;color:var(--muted)}
.picker-photo.already-added{opacity:.5;cursor:default}
.picker-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:18px 0}
.picker-actions{border-top:1px solid var(--rule);padding-top:18px;margin-bottom:0}
@media(max-width:700px){.collections{grid-template-columns:minmax(0,1fr);gap:60px}.collection h2{font-size:21px;margin-top:17px;padding-top:13px}.picker-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.picker-photo img{height:110px}.photo-picker{padding:20px}.picker-toolbar .action{font-size:11px;padding:10px 12px}.expand-mark{right:8px;bottom:8px;width:28px;height:28px}.expand-mark svg{width:19px;height:19px}}
@media(min-width:2400px){.collections{max-width:2200px;gap:130px 160px}.collections:has(>.collection:only-child){grid-template-columns:minmax(0,1000px)}.collection h2{font-size:36px}.v-loading{font-size:17px}.expand-mark{width:48px;height:48px}}
.placement-label{font-size:9px;letter-spacing:.07em;color:#999184}
.placement-list{display:flex;gap:6px 12px;flex-wrap:wrap;line-height:1.8}
.placement-item{font-size:10px;color:#676858;overflow-wrap:anywhere}
.placement-item+.placement-item::before{content:'·';color:#bcb4a5;margin-right:10px}
.placement-none{font-size:10px;color:#a48d6c}
.placement-note,.admin-photo .placement-note{font-size:10px;color:#938574;line-height:1.8;margin:5px 0 0;overflow-wrap:anywhere}
.publish-dialog{width:720px}
.publish-dialog h2{margin-top:15px}
.publish-list{border-top:1px solid var(--rule);margin:24px 0;max-height:42svh;overflow:auto;padding-right:8px}
.publish-row{display:grid;grid-template-columns:75px minmax(0,1fr);gap:18px;padding:18px 0;border-bottom:1px solid var(--rule);align-items:center}
.publish-row img{width:75px;height:80px;object-fit:contain;background:#efebe2}
.publish-filename{font-size:12px;margin:0 0 8px;overflow-wrap:anywhere}
.publish-warning{border-left:1px solid #b69b72;padding-left:14px;font-size:12px;color:#92764e;line-height:1.9}
@media(max-width:700px){.publish-dialog{padding:22px}.publish-row{grid-template-columns:55px minmax(0,1fr);gap:12px}.publish-row img{width:55px;height:65px}.publish-dialog .form-row{gap:12px}.publish-dialog .action{max-width:100%;font-size:11px;padding:12px 14px}}
