:root{color:#111827;background:#f6f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#f6f7fb;margin:0}main{max-width:960px;margin:0 auto;padding:18px 14px 48px}.topbar{justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;display:flex}.topbar h1{color:#0f172a;letter-spacing:-.04em;margin:0;font-size:30px;line-height:1}.topbar p{color:#64748b;margin:6px 0 0}.topbar a{color:#2563eb;background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:9px 13px;font-weight:800;text-decoration:none}.uploadCard,.searchCard{background:#fff;border:1px solid #e5e7eb;border-radius:22px;margin-bottom:12px;padding:14px;box-shadow:0 10px 30px #0f172a0f}.uploadCard{gap:10px;display:grid}.picker{position:relative;overflow:hidden}.picker input[type=file]{opacity:.001;cursor:pointer;z-index:3;width:100%;height:100%;font-size:200px;position:absolute;inset:0}.uploadButton{color:#1d4ed8;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:#eff6ff;border:2px dashed #93c5fd;border-radius:18px;justify-content:center;align-items:center;gap:10px;min-height:82px;font-size:18px;font-weight:900;display:flex}.plain{color:#2563eb;cursor:pointer;background:0 0;border:0;padding:8px;font-weight:800}.details{grid-template-columns:1fr 1fr;gap:8px;display:grid}.details .wide{grid-column:1/-1}input{color:#0f172a;background:#fff;border:1px solid #dbe3ef;border-radius:14px;outline:none;width:100%;padding:13px;font-size:16px}input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.progress{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;padding:10px;font-size:14px;font-weight:800}.progress.done{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.error{color:#991b1b;white-space:pre-wrap;background:#fef2f2;border:1px solid #fecaca;border-radius:14px;padding:10px;font-size:13px;overflow:auto}.search{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;align-items:center;gap:10px;padding:0 12px;display:flex}.search input{box-shadow:none;background:0 0;border:0}.statsRow{justify-content:space-between;align-items:center;gap:12px;margin:12px 2px 10px;display:flex}.stats{color:#64748b}.stats b{color:#0f172a}.refresh{color:#2563eb;cursor:pointer;background:#eef2ff;border:0;border-radius:999px;padding:7px 11px;font-weight:900}.chips,.miniTags{gap:8px;padding-bottom:2px;display:flex;overflow:auto}.chips button,.miniTags button{color:#334155;white-space:nowrap;cursor:pointer;background:#eef2ff;border:0;border-radius:999px;padding:8px 12px;font-weight:800}.chips button.active{color:#fff;background:#2563eb}.grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.photo{background:#fff;border:1px solid #e5e7eb;border-radius:20px;overflow:hidden;box-shadow:0 10px 30px #0f172a0f}.photo img{aspect-ratio:1;object-fit:cover;background:#e5e7eb;width:100%;display:block}.photoInfo{padding:12px}.title{justify-content:space-between;align-items:center;gap:8px;display:flex}.title b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.icon{color:#64748b;cursor:pointer;background:#f1f5f9;border:0;border-radius:999px;padding:8px;display:flex}.icon.on{color:#e11d48;background:#ffe4e6}.sub{color:#64748b;margin:6px 0 8px;font-size:13px}.pending{color:#c2410c;background:#fff7ed;border-radius:10px;margin-bottom:8px;padding:7px 8px;font-size:12px;font-weight:800}.caption{color:#334155;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:6px;font-size:13px;line-height:1.35;display:-webkit-box;overflow:hidden}.caption.expanded{-webkit-line-clamp:unset;display:block;overflow:visible}.summaryToggle{color:#2563eb;cursor:pointer;background:0 0;border:0;padding:0 0 8px;font-size:12px;font-weight:900}.tagBlock{margin-top:8px}.tagBlock>span{color:#64748b;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:12px;font-weight:800;display:block}.miniTags{flex-wrap:wrap;overflow:visible}.miniTags button{background:#f1f5f9;padding:6px 9px;font-size:12px}.miniTags .moreTag{color:#0369a1;background:#e0f2fe}.delete{color:#94a3b8;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin-top:10px;padding:6px 0;display:flex}.empty{text-align:center;color:#64748b;background:#fff;border:1px dashed #cbd5e1;border-radius:20px;grid-column:1/-1;padding:48px 18px}@media (width<=760px){main{padding:16px 12px 36px}.grid{grid-template-columns:repeat(2,1fr)}.details{grid-template-columns:1fr}.topbar h1{font-size:28px}}@media (width<=420px){.grid{grid-template-columns:1fr}.uploadButton{min-height:76px}.photo img{aspect-ratio:4/3}}.footer{text-align:center;color:#94a3b8;margin:26px 0 4px;font-size:13px}.footer a{color:#2563eb;font-weight:900;text-decoration:none}.footer a:hover{text-decoration:underline}.summaryBox summary{cursor:pointer;color:#2563eb;font-weight:900;list-style:none}.summaryBox summary::-webkit-details-marker{display:none}.summaryBox summary:after{content:"show";float:right;color:#64748b;font-size:12px}.summaryBox[open] summary{margin-bottom:6px}.summaryBox[open] summary:after{content:"hide"}.summaryBox div{white-space:pre-wrap;word-break:break-word}.summaryBox{color:#334155;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin:8px 0 10px;padding:8px 10px;font-size:13px;line-height:1.45}.summaryHead{justify-content:space-between;align-items:center;gap:10px;margin-bottom:5px;display:flex}.summaryHead b{color:#2563eb;font-size:13px}.summaryHead button{color:#64748b;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;font-weight:900}.summaryText{-webkit-line-clamp:2;white-space:pre-wrap;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.summaryText.expanded{-webkit-line-clamp:unset;display:block;overflow:visible}.topbarActions{align-items:center;gap:10px;display:flex}.langWrap{align-items:center;display:inline-flex;position:relative}.langSwitch{background:#eef2ff;border:1px solid #0f172a0a;border-radius:999px;align-items:center;gap:0;padding:3px;display:inline-flex}.langSwitch button{color:#64748b;letter-spacing:.04em;cursor:pointer;background:0 0;border:0;border-radius:999px;min-width:34px;padding:6px 11px;font-size:12px;font-weight:800;line-height:1;transition:background .18s,color .18s,box-shadow .18s,transform .12s}.langSwitch button:hover:not(.on){color:#0f172a}.langSwitch button:active{transform:scale(.97)}.langSwitch button.on{color:#0f172a;background:#fff;box-shadow:0 1px 2px #0f172a14,0 0 0 1px #0f172a0a}.langSwitch button:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}.langCoach{color:#fff;letter-spacing:.01em;white-space:nowrap;cursor:pointer;-webkit-backdrop-filter:saturate(140%)blur(6px);z-index:10;background:#0f172aeb;border:0;border-radius:10px;padding:8px 12px;font-size:12px;font-weight:600;animation:.35s cubic-bezier(.2,.8,.2,1) both coachIn,2.4s ease-in-out 1s infinite coachFloat;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 8px 24px #0f172a2e}.langCoach:before{content:"";background:#0f172aeb;border-radius:2px;width:10px;height:10px;position:absolute;top:-5px;right:18px;transform:rotate(45deg)}.langCoach:hover,.langCoach:hover:before{background:#0f172a}@keyframes coachIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes coachFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){.langCoach{animation:none}}:root[lang=zh-Hans]{font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,HarmonyOS Sans SC,Microsoft YaHei,Inter,ui-sans-serif,system-ui,sans-serif}:root[lang=zh-Hans] .topbar h1{letter-spacing:-.02em}:root[lang=zh-Hans] .langSwitch button{font-family:Inter,ui-sans-serif,system-ui,sans-serif}@media (width<=420px){.topbarActions{gap:8px}.topbar a{padding:7px 11px;font-size:13px}}.photoOpen{cursor:zoom-in;-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:100%;padding:0;display:block}.photoOpen img{display:block}.photoOpen:focus-visible{outline-offset:-2px;outline:2px solid #3b82f6}.lightbox{z-index:50;color:#fff;font-feature-settings:"ss01";display:block;position:fixed;inset:0}.lightboxBackdrop{-webkit-backdrop-filter:blur(18px)saturate(140%);background:#080b12f5;animation:.25s both lbFadeIn;position:absolute;inset:0}.lightboxStage{cursor:zoom-out;justify-content:center;align-items:center;padding:56px 56px 80px;display:flex;position:absolute;inset:0}.lightboxImage{object-fit:contain;cursor:default;-webkit-user-select:none;user-select:none;border-radius:6px;max-width:92vw;max-height:86vh;animation:.14s ease-out both lbImageIn;box-shadow:0 30px 80px #00000073}@keyframes lbFadeIn{0%{opacity:0}to{opacity:1}}@keyframes lbImageIn{0%{opacity:0}to{opacity:1}}.lightboxTopBar{opacity:0;z-index:2;background:linear-gradient(#00000073,#0000);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;transition:opacity .18s;display:flex;position:absolute;top:0;left:0;right:0}.lightbox.controlsVisible .lightboxTopBar{opacity:1}.lightboxIconBtn{color:#ffffffeb;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#ffffff14;border:0;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;transition:background .18s,color .18s,transform .12s;display:flex}.lightboxIconBtn:hover{color:#fff;background:#ffffff29}.lightboxIconBtn:active{transform:scale(.96)}.lightboxIconBtn:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}.lightboxIconBtn.on{color:#0f172a;background:#ffffffeb}.lightboxCounter{color:#ffffffc7;font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:13px;font-weight:600}.lightboxArrow{color:#ffffffeb;cursor:pointer;opacity:0;z-index:2;-webkit-tap-highlight-color:transparent;background:#0000005c;border:0;border-radius:999px;justify-content:center;align-items:center;width:46px;height:46px;transition:opacity .18s,background .18s,transform .12s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightboxArrow.left{left:18px}.lightboxArrow.right{right:18px}.lightbox.controlsVisible .lightboxArrow{opacity:1}.lightboxArrow:hover{background:#0009}.lightboxArrow:active{transform:translateY(-50%)scale(.96)}.lightboxArrow:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}.lightboxBottomRow{z-index:2;color:inherit;font:inherit;text-align:left;cursor:default;-webkit-tap-highlight-color:transparent;background:linear-gradient(#0000,#0009);border:0;justify-content:space-between;align-items:flex-end;gap:14px;width:100%;padding:24px 22px 22px;display:flex;position:absolute;bottom:0;left:0;right:0}.lightboxBottomRow[role=button]{cursor:pointer;transition:background .2s}.lightboxBottomRow[role=button]:hover{background:linear-gradient(#0000000f,#000000c7)}.lightboxBottomRow[role=button]:focus-visible{outline-offset:-4px;border-radius:8px;outline:2px solid #3b82f6}.lightboxBottomText{flex:1;min-width:0}.lightboxTitle{color:#fffffff5;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 2px #0006;font-size:15px;font-weight:700;overflow:hidden}.lightboxAlbum{color:#ffffff9e;text-shadow:0 1px 2px #0006;margin-top:2px;font-size:12px}.lightboxDetailsHint{color:#ffffff9e;letter-spacing:.02em;flex-shrink:0;align-items:center;gap:2px;padding-bottom:2px;font-size:12px;font-weight:600;transition:color .18s;display:inline-flex}.lightboxBottomRow[role=button]:hover .lightboxDetailsHint{color:#fffffff2}.lightboxInfo{-webkit-backdrop-filter:blur(20px)saturate(140%);z-index:3;background:#0f172adb;border-left:1px solid #ffffff0f;flex-direction:column;width:360px;transition:transform .26s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden;transform:translate(100%)}.lightbox.infoVisible .lightboxInfo{transform:translate(0)}.lightboxSheetHandle{display:none}.lightboxInfoBody{flex:1;padding:24px 22px;overflow-y:auto}.lightboxInfoTitle{color:#fff;margin:0 0 4px;font-size:18px;font-weight:700}.lightboxInfoMeta{color:#ffffff8c;margin-bottom:18px;font-size:13px}.lightboxInfoSection{margin-bottom:18px}.lightboxInfoSection h4{letter-spacing:.08em;text-transform:uppercase;color:#ffffff80;margin:0 0 8px;font-size:11px;font-weight:800}.lightboxInfoSection p{color:#ffffffe0;white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px;line-height:1.55}.lightboxInfoTags{flex-wrap:wrap;gap:6px;display:flex}.lightboxInfoTags button{color:#ffffffdb;cursor:pointer;background:#ffffff14;border:0;border-radius:999px;padding:5px 9px;font-family:inherit;font-size:12px;font-weight:600;transition:background .15s,color .15s}.lightboxInfoTags button:hover{color:#fff;background:#ffffff29}.lightboxInfoTags button:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}.lightboxInfoEmpty{color:#ffffff80;font-size:13px;font-style:italic}@media (width<=767px){.lightboxStage{padding:48px 12px 88px}.lightboxImage{max-width:100vw;max-height:78vh}.lightboxTopBar{padding:12px}.lightboxArrow{display:none}.lightboxBottomRow{padding:18px 16px 16px}.lightboxInfo{border-top:1px solid #ffffff0f;border-left:0;border-radius:18px 18px 0 0;width:auto;height:auto;max-height:72vh;transition:transform .28s cubic-bezier(.2,.8,.2,1);top:auto;left:0;right:0;transform:translateY(100%)}.lightbox.infoVisible .lightboxInfo{transform:translateY(var(--sheetDrag,0))}.lightbox.sheetDragging .lightboxInfo{transition:none}.lightboxSheetHandle{cursor:grab;touch-action:none;background:#ffffff38;border-radius:999px;flex-shrink:0;width:42px;height:5px;margin:8px auto 6px;display:block}.lightboxInfoBody{padding:16px 18px 28px}}@media (prefers-reduced-motion:reduce){.lightboxBackdrop,.lightboxImage{animation:none}.lightboxInfo{transition:none}}.tagBlockHead{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.tagBlockHead>span{color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:800}.tagBlockHead button{color:#2563eb;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0;font-size:12px;font-weight:900}.tagEditor input{border-radius:12px;padding:10px;font-size:13px}.tagActions{gap:8px;margin-top:8px;display:flex}.tagActions button{cursor:pointer;border:0;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:900}.saveTag{color:#fff;background:#2563eb}.cancelTag{color:#64748b;background:#f1f5f9}.noTags{color:#94a3b8;font-size:12px;font-style:italic}.tagManager .tagBlockHead{margin-bottom:7px}.addTagBtn{cursor:pointer;border:0;border-radius:999px;align-items:center;gap:3px;font-weight:900;line-height:1;display:inline-flex;color:#1d4ed8!important;background:#dbeafe!important;padding:5px 9px!important;font-size:12px!important}.editableTags{align-items:center}.editableTag{color:#334155;background:#f1f5f9;border-radius:999px;align-items:center;max-width:100%;display:inline-flex;overflow:hidden}.editableTag .tagName{color:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;max-width:128px;padding:6px 7px 6px 10px;font-size:12px;font-weight:800;overflow:hidden}.editableTag .tagRemove{color:#64748b;cursor:pointer;background:#0f172a0f;border:0;align-self:stretch;width:24px;padding:0 0 2px;font-size:16px;font-weight:900;line-height:1}.editableTag .tagRemove:hover{color:#b91c1c;background:#fee2e2}.addTagInline{background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;align-items:center;gap:5px;padding:4px;display:inline-flex}.addTagInline input{width:96px;min-width:0;box-shadow:none;background:#fff;border:0;border-radius:999px;padding:7px 9px;font-size:13px}.addTagInline button{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:16px;font-weight:900;display:inline-flex}.addTagInline .saveTag{color:#fff;background:#2563eb}.addTagInline .cancelTag{color:#64748b;background:#e2e8f0}.tagHeadActions{align-items:center;gap:6px;display:inline-flex}.removeModeBtn{color:#64748b;cursor:pointer;background:#f1f5f9;border:0;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:900;line-height:1}.removeModeBtn.on{color:#b91c1c;background:#fee2e2}.editableTags:not(.removing) .editableTag{padding-right:3px}.tagToolBtn{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;line-height:1;display:inline-flex}.tagToolBtn.add{color:#1d4ed8;background:#dbeafe}.tagToolBtn.remove{color:#64748b;background:#f1f5f9}.tagToolBtn.remove.on{color:#b91c1c;background:#fee2e2}.tagToolBtn:active{transform:scale(.96)}
