:root{--motion-ease-out: cubic-bezier(.16, 1, .3, 1);--bg: #f4f4f4;--surface: #ffffff;--ink: #111111;--ink-muted: rgba(17, 17, 17, .64);--hairline: rgba(17, 17, 17, .12);--glass: rgba(255, 255, 255, .7);--glass-strong: rgba(255, 255, 255, .86);--radius: 30px;--radius-sm: 12px;--shadow: 0 12px 38px rgba(0, 0, 0, .06);--dock-h: 118px;--photo-gutter: 18px;--frame: clamp(14px, 2.2vw, 26px);--stamp-font: "Cinzel Decorative", "Cormorant SC", var(--font-chinese);color-scheme:light;--font-chinese: "Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, serif;font-family:"Cormorant Garamond",var(--font-chinese);line-height:1.5;font-weight:500;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body{height:100%}body{margin:0;min-width:320px;color:var(--ink);background:var(--bg)}body.isPhoto{overflow:hidden}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid rgba(17,17,17,.55);outline-offset:3px;border-radius:10px}#app{min-height:100%}.photoTransitionBackdrop{position:fixed;inset:0;z-index:2;overflow:clip;pointer-events:none}.photoTransitionSurface{position:fixed;inset:0;z-index:10;overflow:clip;contain:strict;pointer-events:none}.photoTransitionImage{position:absolute;left:0;top:0;z-index:10;transform-origin:0 0;pointer-events:none;will-change:transform}.photoTransitionToolbar{position:fixed;inset:0;z-index:20;pointer-events:none}.photoTransitionToolbar *{pointer-events:none!important}.shell{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;padding:18px 18px 12px}.glass{background:var(--glass);border:1px solid rgba(255,255,255,.65);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.glass[data-glass=webgl]{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}[data-glass]>:not(.glassRoot){position:relative;z-index:1}.glassRoot{position:absolute;left:-1px;top:-1px;width:calc(100% + 2px);height:calc(100% + 2px);pointer-events:none}.toolbarSlot{position:relative;max-width:760px;margin:0 auto;width:100%;pointer-events:none}.idleToolbar{position:absolute;left:50%;transform:translate(-50%);margin:0;padding:0;display:block;pointer-events:auto}.idleToolbar[data-edge=bottom]{top:100%;transform:translate(-50%,-100%)}.idleToolbar[data-edge=top]{top:0}.idleToolbar>.toolbarMaterial{position:absolute;left:50%;bottom:7px;width:16px;height:16px;margin-left:-8px;border-radius:inherit;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);pointer-events:none;z-index:0;opacity:0}.idleToolbar[data-edge=top]>.toolbarMaterial{bottom:auto;top:7px}.idleToolbar[data-toolbar=collapsed]>.toolbarMaterial{opacity:1}.idleToolbar>.toolbarClip{position:absolute;inset:0;overflow:hidden;border-radius:inherit}.idleToolbar[data-moving]>.toolbarClip{overflow:visible}.toolbarContent{position:absolute;left:50%;bottom:0;transform:translate(-50%);padding:12px}.idleToolbar[data-edge=top] .toolbarContent{bottom:auto;top:0}.idleToolbar>.toolbarDot{position:absolute;bottom:12px;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--ink-muted);opacity:0;pointer-events:none}.idleToolbar[data-edge=top]>.toolbarDot{bottom:auto;top:12px}.idleToolbar[data-toolbar=collapsed] .toolbarClip{pointer-events:none}.topbarInner{max-width:1100px;margin:0 auto;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.topbarInner.idleToolbar{padding:0;display:block}.topbarInner .toolbarContent{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;flex-direction:column;line-height:1.1}.brandTitle{font-family:"Cinzel",var(--font-chinese);font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:14px}.brandSub{font-size:13px;color:var(--ink-muted)}.actions{display:flex;align-items:center;gap:10px}.btn{appearance:none;border:1px solid var(--hairline);background:#fffc;color:var(--ink);border-radius:999px;padding:10px 14px;font:inherit;white-space:nowrap;cursor:pointer;transition:transform .18s var(--motion-ease-out),background .18s var(--motion-ease-out)}.btn:hover{transform:translateY(-1px);background:#ffffffeb}.btn:active{transform:translateY(0)}.content{width:100%;max-width:1100px;margin:0 auto;padding:12px 18px 28px;flex:1}.contentNoTopbar{padding-top:18px}.contentWithDock{padding-bottom:118px}.contentFull{max-width:none}.masonry{column-gap:14px;columns:1}@media(min-width:560px){.masonry{columns:2}}@media(min-width:860px){.masonry{columns:3}}.tile{display:block;break-inside:avoid;margin:0 0 14px}.tileMedia{position:relative;border-radius:var(--radius-sm);overflow:hidden;background:#ffffffb3;box-shadow:var(--shadow)}.tile img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;opacity:0;transition:opacity .24s var(--motion-ease-out);display:block;vertical-align:middle}.tile img.isLoaded{opacity:1}.tileDate{position:absolute;left:12px;bottom:12px;font-family:"Cinzel Decorative","Cormorant SC",var(--font-chinese);font-weight:700;font-size:clamp(12px,1.3vw,16px);letter-spacing:.08em;text-transform:uppercase;color:#ffffffeb;text-shadow:0 1px 10px rgba(0,0,0,.38);pointer-events:none;-webkit-user-select:none;user-select:none}.tile.isFeatured .tileDate:before{content:"★";margin-right:8px;font-size:.92em;vertical-align:baseline}.previewWrap{display:grid;gap:14px;justify-items:center}.photoShell{position:relative}.photoShell .content{padding:0;margin:0}.photoShell .contentWithDock{padding-bottom:0}.photoBg{position:fixed;inset:0;background-size:cover;background-position:center;filter:blur(42px);transform:scale(1.12);opacity:.92}.photoStatus{position:fixed;top:max(16px,env(safe-area-inset-top));left:50%;transform:translate(-50%);max-width:calc(100vw - 32px);padding:8px 12px;border-radius:12px;background:#fafafaf0;color:#222;font-size:13px;z-index:10}.photoBg:after{content:"";position:absolute;inset:0;background:#f4f4f494}.photoStage{position:fixed;inset:0;border-radius:0;overflow:hidden;touch-action:none;z-index:1}.photoPan{position:absolute;left:50%;top:50%;will-change:transform;transition:transform .16s var(--motion-ease-out)}.photoZoom{position:absolute;left:0;top:0;will-change:transform;transition:transform .16s var(--motion-ease-out)}.photoImg{position:absolute;inset:0;width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none}.photoImgLow{opacity:1;transition:opacity .26s var(--motion-ease-out)}.photoImgHigh{opacity:0;transition:opacity .26s var(--motion-ease-out)}.photoStage.hiReady .photoImgLow,.photoStage.hiReady .photoImgHigh{opacity:1}.photoStage.hiDone .photoImgLow{opacity:0;visibility:hidden}.photoStage.noAnim .photoPan,.photoStage.noAnim .photoZoom,.photoStage.isDragging .photoPan,.photoStage.isDragging .photoZoom{transition:none}.dock{position:fixed;left:0;right:0;bottom:0;padding:14px 18px;z-index:20}.dockInner{max-width:none}.dockInner .toolbarContent{display:grid;grid-template-columns:1fr auto;grid-template-areas:"meta meta" "left right";align-items:center;gap:12px}.photoShell>.toolbarSlot{max-width:65vw;position:fixed;left:18px;right:18px;width:auto;bottom:max(14px,env(safe-area-inset-bottom));z-index:20}.dockLeft{grid-area:left;display:flex;align-items:center;gap:10px}.dockRight{grid-area:right;display:flex;align-items:center;justify-content:flex-end}.dockMeta{grid-area:meta;min-width:0;min-height:22px;display:flex;align-items:center;gap:10px;justify-content:center;color:#111111b3;font-size:13px;white-space:nowrap;overflow:hidden}.dockMetaItem{font-family:var(--stamp-font);letter-spacing:.02em;white-space:nowrap}.dockMetaLoading{display:inline-flex;align-items:center;gap:6px;height:18px;width:100%;justify-content:center}.dockMetaLoadingDot{width:6px;height:6px;border-radius:50%;background:#1111118c;transform:scale(.45);opacity:.35;animation:dockMetaDot 1.2s ease-in-out infinite}.dockMetaLoadingDot:nth-child(2){animation-delay:.12s}.dockMetaLoadingDot:nth-child(3){animation-delay:.24s}.dockMetaLoadingDot:nth-child(4){animation-delay:.36s}.dockMetaLoadingDot:nth-child(5){animation-delay:.48s}@keyframes dockMetaDot{0%,80%,to{transform:scale(.45);opacity:.35}40%{transform:scale(1);opacity:.95}}.dockInner .dockMeta{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding:0;scrollbar-width:none;-ms-overflow-style:none}.dockInner .dockMeta::-webkit-scrollbar{display:none}@property --dock-lift{syntax: "<number>"; inherits: false; initial-value: 0;}@property --glass-material{syntax: "<number>"; inherits: true; initial-value: 1;}@property --dock-tone{syntax: "<number>"; inherits: true; initial-value: 255;}@property --dock-shadow-progress{syntax: "<number>"; inherits: true; initial-value: 1;}@property --dock-meta-shadow-progress{syntax: "<number>"; inherits: true; initial-value: 1;}.capsuleDock{position:relative;width:100%;height:44px;display:flex;justify-content:center;align-items:flex-end;pointer-events:none}.capsuleDock>[data-glass-scene]{position:absolute}.capsuleDock>.dockBar{position:relative;z-index:1;width:max-content;flex:0 0 auto;max-width:100%;height:44px;display:flex;align-items:center;gap:12px;box-sizing:border-box;padding:0 16px;border:0;border-radius:999px;background:#ffffff59;box-shadow:0 10px 34px rgb(0 0 0 / calc(.1 * var(--glass-material))),0 1px 2px rgb(0 0 0 / calc(.05 * var(--glass-material)));backdrop-filter:blur(calc(var(--capsule-blur) * var(--glass-material)));-webkit-backdrop-filter:blur(calc(var(--capsule-blur) * var(--glass-material)));overflow:hidden!important;--capsule-blur: .15px;--dock-ink: var(--ink);color:var(--dock-ink);pointer-events:auto;will-change:width,height}.capsuleDock>.dockBar:after{content:"";position:absolute;inset:0;border-radius:inherit;background:#ffffff1a;opacity:var(--glass-material);pointer-events:none;z-index:2}.capsuleDock[data-glass=webgl]>.dockBar{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.capsuleDock[data-glass-pending]>.dockBar{opacity:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.capsuleDock[data-glass-pending]>.dockBar:after,.capsuleDock[data-glass-pending]>.dockBar>canvas[data-glass-output]{opacity:0}.capsuleDock>.dockBar>canvas[data-glass-output]{z-index:0;border-radius:inherit;opacity:var(--glass-material);filter:blur(calc(6px * (1 - var(--glass-material))))}.capsuleDock>.dockBar>.dockMeta,.capsuleDock>.dockBar>.dockAction{position:relative;z-index:3}.capsuleDock .dockMeta{grid-area:auto;flex:1 1 auto;min-width:0;height:44px;padding:0;font-weight:600;color:var(--dock-ink)}.capsuleDock .dockGlyph{position:relative;display:inline-block}.capsuleDock .dockFill{position:relative;z-index:1;display:inline-block;color:rgb(var(--dock-tone) var(--dock-tone) var(--dock-tone));-webkit-text-fill-color:transparent;text-shadow:0 0 0 rgb(var(--dock-tone) var(--dock-tone) var(--dock-tone))}.capsuleDock .dockShadow{display:block;position:absolute;inset:-3px;pointer-events:none;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--dock-shadow-mask);mask-image:var(--dock-shadow-mask)}.capsuleDock .dockShadow:before{content:attr(data-label);position:absolute;inset:3px;color:transparent;text-shadow:0 1px 2px rgb(calc(255 - var(--dock-tone)) calc(255 - var(--dock-tone)) calc(255 - var(--dock-tone)) / .9),0 0 1px rgb(calc(255 - var(--dock-tone)) calc(255 - var(--dock-tone)) calc(255 - var(--dock-tone)) / .65)}.capsuleDock>.dockBar>.dockBack,.capsuleDock>.dockBar>.dockFit,.capsuleDock>.dockBar>.dockDownload{flex:0 0 auto}.capsuleDock>.dockBar[data-tone=dark]{--dock-ink: rgba(255, 255, 255, .96)}.capsuleDock .dockAction{appearance:none;border:0;background-color:transparent;background-image:linear-gradient(rgb(255 255 255 / var(--dock-lift, 0)),rgb(255 255 255 / var(--dock-lift, 0)));background-clip:padding-box;color:var(--dock-ink);font:inherit;font-weight:600;white-space:nowrap;cursor:pointer;padding:6px 12px;border-radius:999px;transform-origin:50% 50%;transition:--dock-lift .26s var(--motion-ease-out),transform .26s var(--motion-ease-out)}.capsuleDock .dockAction:hover{--dock-lift: .22;transform:scale(1.08)}.capsuleDock .dockAction:active{--dock-lift: .3;transform:scale(1.03)}.capsuleDock .capsuleLabel,.capsuleDock .dockMetaItem{background:none;border-radius:0;box-shadow:none;text-shadow:none}.capsuleDock .capsuleDot{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:rgb(var(--dock-tone) var(--dock-tone) var(--dock-tone));opacity:0;pointer-events:none;z-index:4}.capsuleDock .capsuleDots{position:absolute;inset:0;display:block;opacity:0;filter:blur(6px);pointer-events:none;z-index:4}.capsuleDock .stateOutgoing{position:absolute;left:50%;top:50%;translate:-50% -50%;pointer-events:none}.capsuleDock .dockDownload>.downloadLoading{inset:50% auto auto 50%;width:56px;height:32px;transform:translate(-50%,-50%)}.capsuleDock .capsuleDots i{position:absolute;left:50%;top:50%;display:block;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:rgb(var(--dock-tone) var(--dock-tone) var(--dock-tone));opacity:.9}.capsuleDock .capsuleDots i:nth-child(1){translate:-14px 0}.capsuleDock .capsuleDots i:nth-child(3){translate:14px 0}.capsuleDock .capsuleDots i:nth-child(4){translate:-28px 0;transform:scale(0)}.capsuleDock .dockDotInk{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit;pointer-events:none}.capsuleDock .dockDotLight{opacity:calc(var(--dock-tone) / 255)}@media(max-width:560px){.photoShell>.toolbarSlot{max-width:none}.capsuleDock{height:78px}.capsuleDock>.dockBar{width:100%;height:78px;display:grid;grid-template-areas:"meta meta meta" "back fit download";grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:30px 36px;gap:0 10px;padding:6px 13px;border-radius:22px}.capsuleDock .dockMeta{grid-area:meta;width:100%;height:30px}.capsuleDock .dockBack{grid-area:back;justify-self:start}.capsuleDock .dockFit{grid-area:fit;justify-self:center}.capsuleDock .dockDownload{grid-area:download;justify-self:end}.capsuleDock .dockAction{padding-inline:8px}}.empty{padding:24px 18px;text-align:center;color:var(--ink-muted)}.saveOverlay{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;background:#000000db;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.saveOverlayImg{max-width:100%;max-height:68vh;object-fit:contain;border-radius:var(--radius-sm);box-shadow:0 18px 50px #00000080;user-select:none;-webkit-user-select:none;-webkit-touch-callout:default}.saveOverlayHint{color:#ffffffeb;font-size:15px;text-align:center;max-width:320px}.saveOverlayClose{background:#ffffff24;color:#fff;border:1px solid rgba(255,255,255,.35)}@media(prefers-reduced-motion:reduce){.btn,.tile img,.photoPan,.photoZoom,.photoImgLow,.photoImgHigh{transition:none}.dockMetaLoadingDot{animation:none}.capsuleDock .capsuleDots i{opacity:.8}.capsuleDock .dockAction{transition:none}}.adminShell .topbarInner,.adminUpload{flex-wrap:wrap}.adminShell input,.adminShell textarea{width:100%;border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:10px 14px;background:var(--glass);color:var(--ink);font:inherit}.adminShell input[type=file]{width:auto;max-width:100%}.adminFields,.adminLogin,.adminShell label{display:grid;gap:10px}.adminFields{padding:12px}.adminLogin{break-inside:avoid}.adminFeedback:not(:empty){margin-bottom:14px;color:var(--ink-muted)}
