﻿:root{--bg:#f8f9f4;--ink:#273b31;--muted:#81877d;--line:#e0e5da;--green:#344d3d;--accent:#d8ebaf}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:14px Inter,"Segoe UI","Microsoft YaHei",sans-serif}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,.rail-viewport:focus-visible{outline:3px solid #86a85f;outline-offset:4px}[hidden]{display:none!important}.header{height:94px;padding:0 48px;display:flex;align-items:center;justify-content:space-between;max-width:1536px;margin:auto}.brand{display:flex;gap:12px;align-items:center;font-size:25px;font-weight:750;letter-spacing:2px}.brand-icon{font-size:47px;line-height:1}.brand-en{display:block;font-size:9px;letter-spacing:3px;margin-top:3px}.header nav{display:flex;align-items:center;gap:30px;font-size:13px}.header nav>a[aria-current=page]{font-weight:650}.showcase-link{display:flex;align-items:center;gap:35px;padding:13px 20px;background:#e8eddf;border:1px solid #dce3d2;border-radius:6px}.showcase-link:hover{background:#dde6d0}.cover{width:100%;height:clamp(270px,39vw,570px);background:#e8eddf;overflow:hidden;position:relative}.cover>img{width:100%;height:100%;object-fit:cover;display:block}.cover-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at 50% 110%,#d9e2ce,transparent 65%),#e9eddf;color:#89967c}.cover-placeholder>span{font-size:72px;line-height:1;font-weight:300;color:#899d76}.cover-placeholder p{letter-spacing:9px;margin:25px 0 18px;font-size:13px}.cover-placeholder small{font-size:11px;letter-spacing:3px;color:#8e9984}.home-rows,.showcase-page{max-width:1344px;margin:56px auto 80px;width:calc(100% - 96px)}.maker-section{margin-bottom:56px;min-width:0}.maker-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 15px}.maker-tag{display:inline-flex;align-items:center;gap:13px;max-width:80%;padding:12px 24px;margin:0;background:#e7ecdf;border:1px solid #dce4d1;border-radius:5px;font-size:17px;font-weight:550;line-height:1.5;overflow-wrap:anywhere}.dot{width:6px;height:6px;background:#82956d;border-radius:50%;display:inline-block;flex-shrink:0}.maker-index{font-size:9px;letter-spacing:1.8px;color:#939c89;white-space:nowrap}.photo-rail{--gap:20px;--columns:3;--viewport-width:1000px;--card-width:calc((var(--viewport-width) - (var(--columns) - 1)*var(--gap))/var(--columns));min-width:0;margin-bottom:25px}.photo-rail.home-rail{--columns:5}.photo-rail.landscape{--columns:2}.rail-meta{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:15px;font-size:10px;color:#939a8b;letter-spacing:1px}.rail-controls{display:flex;gap:7px}.rail-controls button{border:1px solid var(--line);background:transparent;border-radius:50%;width:29px;height:29px;font-size:12px;padding:0}.rail-controls button:hover:not(:disabled){background:#e8eddf}.rail-controls button:disabled{opacity:.3;cursor:default}.rail-controls button[aria-pressed=true]{background:var(--green);color:white}.rail-viewport{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#c9d1bf transparent;padding-bottom:10px;overscroll-behavior-x:contain}.rail-track,.rail-group{display:flex;gap:var(--gap);width:max-content;align-items:stretch}.rail-group{flex:none}.photo-card{width:var(--card-width);flex:none;aspect-ratio:3/4;border:0;padding:0;background:#e7ecdf;border-radius:9px;overflow:hidden;position:relative;text-align:left}.landscape .photo-card{aspect-ratio:16/10}.photo-card img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .4s}.photo-card:hover img{transform:scale(1.025)}.photo-caption{position:absolute;bottom:0;left:0;right:0;padding:35px 18px 16px;background:linear-gradient(transparent,#192b2580);display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fff;font-size:12px;opacity:0;transition:opacity .2s}.photo-card:hover .photo-caption,.photo-card:focus-visible .photo-caption{opacity:1}.rail-empty{width:var(--viewport-width);height:clamp(170px,21vw,300px);border:1px dashed #d5deca;border-radius:9px;background:linear-gradient(120deg,#f0f3ea,#f5f6ef);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#9aa58f}.rail-empty>span{font-size:26px;font-weight:300;color:#adb9a0}.rail-empty p{font-size:13px;letter-spacing:3px;margin:13px 0}.rail-empty small{font-size:10px;letter-spacing:1px}.showcase-page{max-width:1120px;margin-top:42px}.showcase-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:26px;margin-bottom:42px}.showcase-heading h1{font-size:32px;font-weight:550;margin:13px 0 0}.showcase-heading h1 span{font-size:11px;display:inline-block;font-weight:400;margin-left:25px;color:#8c9582}.back-home{font-size:12px;color:#7b886e}.showcase-page .maker-section{margin-bottom:57px}.showcase-page .maker-heading{margin-bottom:18px}.showcase-page .portrait{--columns:3}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2px;display:flex;align-items:center;gap:9px}.muted{color:var(--muted)}h2{font-size:27px;font-weight:600;letter-spacing:-.6px;margin:12px 0}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:25px;border-radius:7px;padding:13px 22px;border:1px solid transparent;font-weight:550;font-size:13px}.primary{background:var(--green);color:#fff}.primary:hover{background:#46654d}.secondary{border-color:var(--line);background:transparent}.section{max-width:1224px;margin:55px auto;width:calc(100% - 96px)}.section-top{display:flex;justify-content:space-between;align-items:end;gap:16px}.empty{padding:70px 20px;text-align:center;color:var(--muted)}footer{max-width:1344px;width:calc(100% - 96px);margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:28px 0 35px;border-top:1px solid var(--line);gap:20px;color:#929788;font-size:10px}.footer-brand{font-size:16px;color:#526247;font-weight:600}.footer-brand span{font-size:8px;margin-left:6px;letter-spacing:1px}.version{display:flex;align-items:center;gap:7px;font-size:8px;letter-spacing:1px}.version b{font-weight:400;color:#a0a796;margin-left:5px}dialog{border:1px solid var(--line);border-radius:18px;padding:34px;background:var(--bg);color:var(--ink);max-height:90vh;max-width:850px;width:calc(100% - 32px);overflow:auto}dialog::backdrop{background:#17291f99;backdrop-filter:blur(5px)}.close{position:absolute;right:12px;top:10px;width:32px;height:32px;border:0;border-radius:50%;background:#f7f9f1e6;font-size:24px;z-index:2}.detail-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:28px}.detail-image{width:100%;max-height:65vh;object-fit:contain;border-radius:10px;background:#e8ecdf}.detail-copy{padding-top:30px}.detail-copy p{line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;color:#7d8574}.detail-thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.detail-thumbs button{padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;width:52px;height:62px}.detail-thumbs button:focus{border-color:var(--green)}.detail-thumbs img{width:100%;height:100%;object-fit:cover}.admin{min-height:70vh}.admin h1{font-size:32px}.local-note{background:#eef1e5;border-radius:8px;padding:15px;font-size:12px;line-height:1.8;color:#68735d}.panel{border:1px solid var(--line);padding:26px;border-radius:12px;margin:25px 0;background:#fffefa}.panel h2,#workForm h2{font-size:22px;margin-top:0}.narrow{max-width:460px;margin:40px auto}.narrow p{line-height:1.8;color:var(--muted)}form label{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;font-size:12px}form input:not([type=file]),form textarea,form select{border:1px solid #dce2d3;background:var(--bg);border-radius:7px;padding:12px;color:var(--ink);width:100%}form input:focus,form textarea:focus,form select:focus{outline:2px solid #b5c59f;outline-offset:1px}form small{font-size:11px;line-height:1.6;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.admin-actions{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:25px 0}.admin-actions #logout{margin-left:auto}.admin-row{display:flex;align-items:center;gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.admin-row:last-child{border:0}.admin-row img{width:52px;height:65px;object-fit:cover;border-radius:6px}.admin-row .row-info{flex:1;min-width:0}.admin-row h3{margin:0 0 5px;overflow-wrap:anywhere}.admin-row p{font-size:11px;color:var(--muted);margin:0;line-height:1.8}.admin-row button{padding:8px 12px}.danger{color:#a05b4d}.upload{border:1px dashed #b6c4a7;padding:20px;border-radius:10px;background:#f0f3e9}.upload-preview{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.upload-preview img{width:72px;height:90px;object-fit:cover;border-radius:6px}#adminHeroPreview{display:block;width:100%;max-height:180px;object-fit:cover;border-radius:7px;margin:12px 0}#storageMeter{width:100%;height:18px;accent-color:var(--green)}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#2e4638;color:#fff;padding:14px 24px;border-radius:9px;z-index:100;box-shadow:0 6px 25px #0002;max-width:90vw;width:max-content;font-size:13px}@media(max-width:900px){.home-rail.photo-rail{--columns:3}.header{padding:0 30px}.home-rows,.showcase-page,.section,footer{width:calc(100% - 60px)}}@media(max-width:600px){.header{height:78px;padding:0 20px}.brand{font-size:20px;gap:8px}.brand-icon{font-size:36px}.brand-en{font-size:7px;letter-spacing:2.5px}.header nav{gap:15px;font-size:11px}.showcase-link{padding:10px 12px;gap:16px}.cover{height:270px}.cover-placeholder>span{font-size:50px}.cover-placeholder p{font-size:11px;letter-spacing:7px}.cover-placeholder small{font-size:9px;letter-spacing:2px}.home-rows,.showcase-page,.section,footer{width:calc(100% - 40px)}.home-rows{margin-top:32px;margin-bottom:40px}.maker-section{margin-bottom:32px}.maker-tag{font-size:14px;padding:9px 14px;gap:9px;max-width:72%}.maker-index{font-size:7px;letter-spacing:.7px}.maker-heading{gap:10px;margin-bottom:9px}.photo-rail{--gap:12px}.home-rail.photo-rail,.showcase-page .portrait{--columns:2}.photo-rail.landscape{--columns:1}.rail-meta{font-size:9px;margin-bottom:10px}.rail-controls{gap:6px}.rail-controls button{width:27px;height:27px}.photo-card{border-radius:6px}.photo-caption{font-size:10px;padding:28px 12px 10px}.rail-empty{height:185px}.rail-empty small{font-size:9px}.showcase-page{margin-top:25px}.showcase-heading{margin-bottom:28px;align-items:start;padding-bottom:20px}.showcase-heading h1{font-size:26px}.showcase-heading h1 span{display:block;margin:9px 0 0;font-size:10px}.back-home{font-size:10px;padding-top:5px}.showcase-page .maker-section{margin-bottom:35px}footer{flex-wrap:wrap;gap:18px;font-size:9px;padding-top:23px}footer>span:nth-child(2){order:3;width:100%;font-size:9px}.version{font-size:7px}dialog{padding:27px 20px}.detail-layout{grid-template-columns:1fr}.detail-image{max-height:47vh}.detail-copy{padding-top:0}.form-grid{grid-template-columns:1fr}.panel{padding:18px}.admin-row{gap:9px}.admin-row button{padding:7px;font-size:11px}.admin-row h3{font-size:14px}.admin .section-top{align-items:center}.admin .section-top .secondary{font-size:11px;padding:10px}.admin-actions .primary,.admin-actions .secondary{font-size:11px;padding:10px 12px}.admin-actions #logout{margin-left:0}.section{margin-top:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.brand{display:block;flex-shrink:0;line-height:0}.brand #brandImage{display:block;width:180px;height:52px;object-fit:contain;object-position:left center}
#adminLogoPreview{display:block;width:min(100%,300px);height:90px;object-fit:contain;object-position:left center;margin:16px 0;background:repeating-conic-gradient(#eef0e9 0% 25%,#fff 0% 50%) 50% / 16px 16px;border:1px solid var(--line);border-radius:12px;padding:8px}
#bulkDialog{width:min(720px,calc(100% - 32px))}#bulkFields{border:0;margin:0;padding:0;min-width:0}#bulkList{max-height:260px;overflow:auto;padding:0;list-style:none}.bulk-item{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #e4e7de}.bulk-item>span{overflow-wrap:anywhere;min-width:0;flex:1}.bulk-item small{flex:1;text-align:right;overflow-wrap:anywhere}.bulk-item.done small{color:#3f6d32}.bulk-item.error small{color:#a33f37}.bulk-item.uploading small{color:#666426}button:disabled{opacity:.55;cursor:default}
@media(max-width:600px){.brand #brandImage{width:132px;height:44px}#bulkDialog{padding:24px 18px}.bulk-item{gap:10px}}
@media(max-width:360px){.brand #brandImage{width:104px}.header nav{gap:10px}.showcase-link{gap:10px}}

@media(max-width:600px),(hover:none) and (pointer:coarse){
 .photo-rail .rail-controls{display:none}
 .photo-rail .rail-viewport{scrollbar-width:none;-ms-overflow-style:none;padding-bottom:0;touch-action:pan-x pan-y pinch-zoom;-webkit-overflow-scrolling:touch}
 .photo-rail .rail-viewport::-webkit-scrollbar{display:none;width:0;height:0}
 .photo-rail .photo-card{touch-action:pan-x pan-y pinch-zoom;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
 .photo-rail .photo-card img{-webkit-user-drag:none}
}
.work-filters{display:flex;align-items:end;flex-wrap:wrap;gap:14px;margin:22px 0 12px}.work-filters label{display:flex;flex:1 1 150px;flex-direction:column;gap:8px;font-size:12px}.work-filters select{border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:11px;color:var(--ink);width:100%}.work-selection{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px;background:#f0f3e9;border-radius:8px}.work-selection label{display:flex;align-items:center;gap:8px;cursor:pointer}.work-select,#selectAllWorks{width:18px;height:18px;flex-shrink:0;accent-color:var(--green);cursor:pointer}.work-selection>span{font-size:12px;color:var(--muted);margin-right:auto}.work-selection .secondary{padding:9px 12px}.work-selection-hint{font-size:11px;line-height:1.8}
@media(max-width:600px){.work-filters{gap:12px}.work-filters label{flex-basis:calc(50% - 12px)}.work-selection{gap:12px;padding:12px}.work-selection>span{flex-basis:100%;order:3}.work-selection .secondary{font-size:11px;padding:8px}.admin-row .work-select{width:18px;height:18px;margin:0}.admin-row .row-info{font-size:12px}.admin-row img{width:40px;height:52px}}
