
:root{--ink:#222b26;--muted:#879087;--green:#274e3c;--border:#e5e9e4;--soft:#f3f5f1}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font-family:Arial,'Microsoft YaHei','PingFang SC',sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{color:inherit;cursor:pointer;border:0;background:none;padding:0}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}p,h1,h2,h3{margin:0}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #7b9c86;outline-offset:4px}fieldset{border:0;padding:0;margin:0;min-width:0}.site{max-width:1120px;margin:auto;padding:0 30px}.site-header{height:88px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:15px;font-size:21px;font-weight:600;letter-spacing:.5px}.brand>span{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0;border-left:1px solid #dce2dc;padding-left:15px}.header-actions{display:flex;align-items:center;gap:15px}.manage-link{font-size:12px;color:#8b948c;padding:10px 0 10px 12px}.manage-link:hover{color:var(--green)}.owner-label{font-size:11px;color:var(--muted)}.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:39px;padding:0 16px;border-radius:5px;font-size:12px;white-space:nowrap;border:1px solid transparent;transition:background .15s}.primary{background:var(--green);color:#fff}.primary:hover{background:#1c3a2b}.outline{border-color:#d7ded6;background:#fff}.outline:hover{background:var(--soft)}.icon-button{width:33px;height:33px;display:inline-flex;align-items:center;justify-content:center;border-radius:5px}.icon-button:hover{background:var(--soft)}.page-heading{padding:41px 0 27px}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:25px}.page-heading h1{font-size:29px;line-height:1.5;font-weight:600;letter-spacing:.3px}.page-heading p{font-size:12px;color:var(--muted);line-height:1.8;margin-top:10px}.album-count{font-size:11px;color:#9aa298;display:block;margin-top:23px}.back-button{display:flex;align-items:center;gap:7px;color:#899488;font-size:12px;margin-bottom:22px;min-height:25px}.back-button:hover{color:var(--green)}.download-note{font-size:10px;color:#a0a79d;text-align:right;margin-top:13px}.album-downloads{display:flex;gap:10px;flex-wrap:wrap}.album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.album-card{text-align:left;min-width:0}.album-cover{width:100%;aspect-ratio:1.5;background:var(--soft);border-radius:7px;overflow:hidden;display:flex;justify-content:center;align-items:center;color:#b2bdb0}.album-cover>img{width:100%;height:100%;object-fit:cover;transition:transform .25s}.album-card:hover .album-cover>img{transform:scale(1.025)}.album-info{padding:18px 1px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.album-info h2{font-size:19px;font-weight:500;line-height:1.5}.album-info p{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.7}.album-info p>span{padding:0 9px;color:#b0b9ad}.album-info>svg{color:#9aa795}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:25px 18px}.photo-card{min-width:0}.photo-open{display:block;width:100%;aspect-ratio:1.22;border-radius:5px;overflow:hidden;background:var(--soft)}.photo-open img{width:100%;height:100%;object-fit:cover;transition:transform .2s}.photo-open:hover img{transform:scale(1.035)}.photo-info{display:flex;align-items:center;justify-content:space-between;padding-top:10px;color:#a0a99d;font-size:10px}.photo-info>a{display:flex;align-items:center;gap:5px;color:#6f806d;font-size:10px;padding:3px 0}.photo-info>a:hover{color:var(--green)}.state{min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;color:#8f9c8b;font-size:12px;text-align:center;line-height:1.8}.album-grid>.state{grid-column:1/-1}.compact{min-height:130px}.error-state{border:1px solid var(--border);border-radius:6px;color:#a76b4d}.load-more{text-align:center;padding-top:30px}footer{border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;color:#a0a99c;font-size:10px;min-height:96px;margin-top:65px;gap:20px}footer>span:first-child{color:#7b8a77}.text-link{font-size:11px;color:#7e8d76}.text-link:hover{color:var(--green)}.danger{color:#ab6c55}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;z-index:100;bottom:25px;left:50%;transform:translateX(-50%);border:1px solid #d4dfce;background:#f6faf1;color:#546b48;padding:14px 23px;font-size:12px;border-radius:7px;box-shadow:0 5px 25px #17291e12;max-width:calc(100vw - 30px);line-height:1.8}.modal{padding:0;border:0;border-radius:10px;background:white;color:var(--ink);width:100%;max-width:min(650px,calc(100vw - 28px));max-height:calc(100dvh - 40px);overflow:auto;box-shadow:0 20px 100px #12251b50}.modal::backdrop{background:#0a160fce}.modal-inner{padding:27px}.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:25px}.modal-heading h2{font-size:22px;font-weight:500;line-height:1.5}.modal-heading .eyebrow{font-size:10px;color:#92a087;margin-bottom:9px;line-height:1.5}.modal-heading .icon-button{background:var(--soft);color:#8d9b83;flex-shrink:0}.admin-prompt{padding:10px 12px 17px;display:flex;align-items:center;flex-direction:column;gap:24px;text-align:center}.admin-prompt>svg{color:#9bb08d}.admin-prompt p{font-size:13px;line-height:1.8;color:#74866a}.admin-prompt .muted{font-size:11px;color:#9aa691;max-width:320px}.admin-prompt .button{min-height:42px}.lightbox{max-width:min(1120px,calc(100vw - 24px))}.lightbox .modal-inner{padding:21px}.lightbox .modal-heading{margin-bottom:16px}.lightbox .modal-heading h2{font-size:18px}.lightbox .modal-heading .eyebrow{font-size:10px;margin-bottom:6px}.viewer-image{height:min(65dvh,740px);position:relative;background:#f0f2ed;border-radius:5px;overflow:hidden}.viewer-image>img{width:100%;height:100%;object-fit:contain}.viewer-loading{position:absolute;top:50%;left:50%;color:#779367}.viewer-prev,.viewer-next{position:absolute;top:50%;transform:translateY(-50%);background:#ffffffed;border:1px solid #dee4da;display:grid;place-items:center;height:37px;width:37px;border-radius:50%}.viewer-prev{left:13px}.viewer-next{right:13px}.viewer-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:19px}.viewer-footer>div:first-child{min-width:0;flex:1}.viewer-footer span{font-size:11px;color:#74866b}.viewer-footer small{display:block;color:#a0ae96;font-size:10px;margin-top:7px}.viewer-footer>div:last-child{display:flex;align-items:center;gap:16px}.viewer-footer .button{min-height:38px}.upload-mode{display:flex;border:1px solid #dce3d2;border-radius:6px;overflow:hidden;margin-bottom:21px;background:#f4f6f1}.upload-mode button{width:50%;font-size:11px;min-height:38px;display:flex;align-items:center;justify-content:center;gap:7px;color:#91a17f}.upload-mode button.selected{background:#e7eddf;color:#385033}.field-label{display:block;font-size:11px;font-weight:500;margin-bottom:16px}.field-label>span{color:#c69174;margin-left:5px}.field-label>small{font-size:10px;color:#a5b094;margin-left:6px;font-weight:400}.field-label input,.field-label select{display:block;width:100%;border:1px solid #dce3d2;background:#fff;border-radius:5px;padding:10px 12px;min-height:42px;font-size:12px;color:var(--ink);margin-top:8px;min-width:0}.field-label input::placeholder{color:#a8b19f;font-size:11px}.form-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.dropzone{position:relative;border:1.5px dashed #bbcbaa;border-radius:7px;background:#f6f8f3;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px 12px}.dropzone.dragging{background:#e4edda;border-color:var(--green)}.dropzone>input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;z-index:2}.dropzone.disabled>input{cursor:wait}.dropzone:focus-within{outline:2px solid #7b9c86;outline-offset:3px}.drop-icon{width:44px;height:44px;background:#e8eddf;color:#879e73;border-radius:50%;display:grid;place-items:center;margin-bottom:12px}.dropzone b{font-size:12px;font-weight:500}.dropzone p{font-size:9px;color:#8c9d79;margin-top:10px;line-height:1.7;text-align:center}.dropzone small{font-size:9px;color:#a5b198;margin-top:6px}.upload-queue{margin-top:19px}.queue-heading{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#849772;margin-bottom:10px}.queue-list{max-height:180px;overflow:auto;scrollbar-width:thin}.queue-item{display:flex;align-items:center;gap:10px;border-bottom:1px solid #e7ebdf;padding:8px 0}.queue-item>img{width:39px;height:39px;object-fit:cover;border-radius:4px;flex-shrink:0}.queue-item>div{min-width:0;flex:1}.queue-item b{display:block;font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-item small{display:block;font-size:9px;color:#9aa98b;margin-top:5px;overflow-wrap:anywhere}.queue-item.done>svg{color:#7d9d5f;flex-shrink:0}.queue-item.error small{color:#b36a44}.progress-track{height:3px;background:#e3ebd7;border-radius:8px;margin-bottom:7px;overflow:hidden}.progress-track i{height:100%;display:block;background:#76945a;transition:width .3s}.upload-error{margin-top:17px;display:flex;align-items:flex-start;gap:7px;font-size:11px;color:#ab623c;line-height:1.8;background:#f7eee4;border-radius:5px;padding:10px}.upload-error svg{flex-shrink:0;margin-top:2px}.upload-notice{color:#9caa8e;font-size:9px;line-height:1.8;margin-top:14px}.upload-footer{border-top:1px solid #e0e6d7;margin-top:17px;padding-top:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.upload-footer>span{font-size:10px;color:#98a68a;line-height:1.7}.upload-footer .button{font-size:11px;min-height:40px}.signin-prompt{display:flex;align-items:center;flex-direction:column;gap:20px;padding:20px;font-size:12px;line-height:1.8}.signin-prompt small{color:var(--muted)}
@media(max-width:850px){.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.site{padding-inline:24px}.album-grid{gap:23px}.album-info h2{font-size:18px}}
@media(max-width:600px){.site{padding:0 18px}.site-header{height:70px}.brand{font-size:19px;gap:11px}.brand>span{font-size:11px;padding-left:11px}.manage-link{font-size:11px}.header-actions{gap:10px}.owner-label{display:none}.header-actions .button{padding-inline:10px;font-size:10px;min-height:33px;gap:5px}.header-actions .button svg{width:14px}.header-actions .icon-button{width:25px}.page-heading{padding:27px 0 22px}.page-heading h1{font-size:25px}.page-heading p{font-size:11px;line-height:1.9;margin-top:9px}.album-count{font-size:10px;margin-top:19px}.album-grid{grid-template-columns:1fr;gap:31px}.album-cover{aspect-ratio:1.5;border-radius:6px}.album-info{padding-top:13px}.album-info h2{font-size:18px}.album-info p{font-size:10px;margin-top:6px}.album-info>svg{width:17px}.heading-row{gap:17px;align-items:flex-start;flex-wrap:wrap}.back-button{font-size:11px;margin-bottom:18px;gap:6px}.album-downloads .button{font-size:11px;min-height:37px}.download-note{text-align:left;font-size:9px;line-height:1.8;margin-top:11px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 12px}.photo-open{aspect-ratio:1.15;border-radius:4px}.photo-info{padding-top:8px;font-size:9px}.photo-info>a{font-size:9px;gap:4px}.photo-info>a>svg{width:12px}.state{min-height:200px;font-size:11px}.compact{min-height:110px}footer{margin-top:43px;min-height:83px;font-size:9px;gap:15px;line-height:1.8}.modal{max-width:calc(100vw - 20px);max-height:calc(100dvh - 28px)}.modal-inner{padding:23px 18px}.modal-heading{gap:16px;margin-bottom:23px}.modal-heading h2{font-size:20px}.modal-heading .eyebrow{font-size:9px}.modal-heading .icon-button{width:29px;height:29px}.modal-heading .icon-button svg{width:18px}.admin-prompt{gap:22px;padding:9px 2px 14px}.admin-prompt p{font-size:12px}.admin-prompt .muted{font-size:10px}.admin-prompt .button{font-size:11px;min-height:40px}.lightbox .modal-inner{padding:19px 12px}.lightbox .modal-heading{padding-inline:4px}.lightbox .modal-heading h2{font-size:16px}.viewer-image{height:54dvh}.viewer-prev,.viewer-next{height:31px;width:31px}.viewer-prev{left:8px}.viewer-next{right:8px}.viewer-footer{flex-wrap:wrap;gap:15px;padding-top:16px}.viewer-footer span{font-size:10px}.viewer-footer small{font-size:8px;margin-top:6px}.viewer-footer>div:last-child{gap:13px}.viewer-footer .text-link{font-size:10px}.viewer-footer .button{font-size:10px;min-height:35px;padding-inline:11px;gap:6px}.viewer-footer .button svg{width:14px}.viewer-footer .icon-button{width:23px}.upload-mode button{font-size:10px;gap:5px;min-height:37px}.upload-mode button svg{width:13px}.field-label{font-size:10px;margin-bottom:14px}.field-label input,.field-label select{font-size:11px;padding-inline:10px;min-height:41px;margin-top:8px}.field-label input::placeholder{font-size:10px}.form-two-col{gap:12px}.field-label>small{font-size:9px}.dropzone{padding:21px 9px}.dropzone b{font-size:11px}.dropzone p{font-size:8px;margin-top:9px}.dropzone small{font-size:8px}.drop-icon{width:40px;height:40px;margin-bottom:11px}.drop-icon svg{width:21px}.upload-footer{flex-direction:column;align-items:stretch;gap:14px;padding-top:16px}.upload-footer>span{font-size:9px;text-align:center;order:2}.upload-footer .button{font-size:11px;min-height:42px;order:1}.upload-notice{font-size:8px}.upload-error{font-size:10px;padding:9px}.toast{font-size:10px;padding:12px 16px;bottom:20px}.queue-list{max-height:157px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}

