:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Noto Sans CJK SC,sans-serif;color:#28251f;background:#f4efe6;font-synthesis:none;--ink: #25231f;--paper: #fbf8f1;--red: #bd3d2f;--muted: #7a746a;--line: rgba(55, 47, 38, .14)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;overscroll-behavior-y:contain;background:radial-gradient(circle at 80% 0,#fffaf0 0,transparent 36%),#f4efe6}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app{width:min(100%,720px);min-height:100dvh;margin:auto;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.topbar{position:sticky;z-index:20;top:0;padding:calc(15px + env(safe-area-inset-top)) 18px 11px;background:#f4efe6ed;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(55,47,38,.08)}.brandrow{display:flex;align-items:center;justify-content:space-between}.brand{display:grid;gap:3px;font-family:STKaiti,KaiTi,serif;font-size:29px;font-weight:700;letter-spacing:.08em}.brand small{color:var(--muted);font:11px/1 sans-serif;letter-spacing:.08em}.user-chip{display:flex;align-items:center;gap:7px;max-width:52%;padding:3px 9px 3px 3px;border:1px solid var(--line);border-radius:99px;color:var(--ink);background:#fbf8f1c2}.user-chip span{display:grid;place-items:center;width:31px;height:31px;border-radius:50%;color:#fff;background:var(--ink);font:700 15px/1 STKaiti,KaiTi,serif}.user-chip b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.content{padding:20px 16px}.eyebrow{color:var(--red);font-size:12px;font-weight:750;letter-spacing:.12em}h1{margin:8px 0 6px;font:700 28px/1.25 STKaiti,KaiTi,serif}.sub{margin:0 0 20px;color:var(--muted);font-size:14px;line-height:1.55}.upload{display:block;overflow:hidden;position:relative;min-height:190px;border:1.5px dashed #aaa194;border-radius:18px;background:#ffffff75;cursor:pointer}.upload input{position:absolute;width:1px;height:1px;opacity:0}.upload-empty{display:grid;place-content:center;height:190px;padding:24px;text-align:center}.upload-icon{width:48px;height:48px;margin:0 auto 13px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--red);font-size:27px}.upload-empty strong{font-size:17px}.upload-empty span{margin-top:8px;color:var(--muted);font-size:13px}.upload-preview{display:block;width:100%;height:230px;object-fit:contain;background:#ded8ce}.upload-change{position:absolute;right:12px;bottom:12px;padding:8px 12px;color:#fff;background:#211f1ccc;border-radius:99px;font-size:13px}.primary,.secondary,.danger{width:100%;min-height:50px;margin-top:14px;border:0;border-radius:14px;font-weight:750}.primary{color:#fff;background:var(--red);box-shadow:0 6px 18px #bd3d2f35}.primary:disabled{opacity:.45;box-shadow:none}.secondary{color:var(--ink);background:#e8e0d3}.danger{color:#fff;background:var(--ink)}.compact{width:auto;min-height:44px;padding-inline:18px}.form-error{margin:10px 2px 0;padding:10px 12px;border:1px solid #d77c72;border-radius:10px;color:#8d2c24;background:#fff0ed;font-size:13px;line-height:1.45}.section-title{display:flex;align-items:center;justify-content:space-between;margin:25px 0 11px}.section-title h2{margin:0;font-size:17px}.count{color:var(--muted);font-size:12px}.empty{padding:34px 20px;border:1px solid var(--line);border-radius:16px;color:var(--muted);background:#fff6;text-align:center}.home{max-width:520px;margin-inline:auto;padding-top:12px}.home-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:48px}.relationship-tabs{display:flex;align-items:center;gap:22px}.relationship-tabs button{position:relative;min-height:42px;padding:0 1px;border:0;color:var(--muted);background:transparent;font-size:15px;font-weight:650}.relationship-tabs button.active{color:var(--ink)}.relationship-tabs button.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:99px;background:#315d3e}.home-intro{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:2px 0 5px}.home-intro h1{max-width:280px;margin:5px 0 0;font-size:23px;font-weight:600}.home-intro .eyebrow{color:var(--muted);font-size:11px;font-weight:600}.upload-cta{flex:0 0 auto;width:auto;min-height:44px;margin:0;padding:0 16px;background:#416a4d;box-shadow:0 7px 18px #416a4d2b}.activity-reminder{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;width:100%;margin-top:17px;padding:13px 14px;border:1px solid rgba(55,47,38,.09);border-radius:15px;color:var(--ink);background:#fffdf8d6;box-shadow:0 5px 18px #5e50360b;text-align:left}.activity-reminder>span:nth-child(2){display:grid;gap:4px;min-width:0}.activity-reminder b{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.activity-reminder small{color:var(--red);font-size:11px}.activity-reminder i{color:var(--red);font-size:18px;font-style:normal}.activity-dot,.unread-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red)}.home-empty{padding-block:72px 48px;border:0;background:transparent}.home-empty h2{margin:11px 0 5px;color:var(--ink);font:700 21px/1.2 STKaiti,KaiTi,serif}.home-empty p{margin:0 0 18px}.home-empty .primary{margin:0}.empty-mark{display:grid;place-items:center;width:64px;height:64px;margin:auto;border-radius:50%;color:#756e64;background:#e7dfd2;font:700 29px/1 STKaiti,KaiTi,serif}.cards{display:grid;gap:9px}.card{display:grid;grid-template-columns:126px minmax(0,1fr);overflow:hidden;min-height:95px;border:1px solid rgba(55,47,38,.1);border-radius:15px;background:#fbf8f1eb;box-shadow:0 4px 16px #5e50360a;cursor:pointer}.card-body{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:12px 12px 12px 14px}.card-body>div{min-width:0}.thumb{width:126px;height:auto;aspect-ratio:4 / 3;object-fit:cover;background:#ddd6ca}.thumb-placeholder{display:grid;place-items:center;color:#9b9184;background:linear-gradient(135deg,#e9e1d4,#dcd2c3)}.thumb-placeholder span{font:700 42px/1 STKaiti,KaiTi,serif;opacity:.58}.thumb-placeholder.failed{background:#ead9d4}.card h3{overflow:hidden;margin:0 0 7px;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.meta{color:var(--muted);font-size:12px}.review-summary{margin-top:5px;color:var(--muted);font-size:11px}.review-summary.reviewed{margin-top:3px;color:#5f594f;line-height:1.45}.review-summary.reviewed span{color:var(--muted)}.review-summary strong{color:var(--red);font-weight:650}.review-summary .unread-dot{margin-right:4px}.card-invite{min-height:31px;margin-top:8px;padding:4px 10px;border:1px solid #416a4d;border-radius:9px;color:#31563c;background:transparent;font-size:11px;font-weight:700}.chev{padding-right:4px;color:#948b7f;font-size:22px}.detail-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-bottom:10px}.back{width:40px;height:40px;border:0;border-radius:50%;background:#e7dfd2;font-size:22px}.detail-title{min-width:0}.detail-head h1{margin:0;font-size:22px}.detail-time{margin-top:3px;color:var(--muted);font-size:11px}.detail-head-invite{min-height:40px;padding:7px 12px;border:0;border-radius:12px;color:#fff;background:#416a4d;box-shadow:0 6px 16px #416a4d29;font-size:12px;font-weight:750;white-space:nowrap}.viewer{position:relative;overflow:hidden;width:100%;height:min(42vh,390px);min-height:min(250px,38vh);height:min(42dvh,390px);min-height:min(250px,38dvh);border-radius:18px;background:#25231f;box-shadow:0 12px 35px #2a241a24;touch-action:none}.detail-preview{display:grid;place-items:center;touch-action:auto}.detail-preview>img{display:block;width:100%;height:100%;object-fit:contain}.preview-placeholder{color:#fff5;font:700 64px/1 STKaiti,KaiTi,serif}.scene{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.scene img{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.drawing{position:absolute;inset:0;overflow:visible}.hint{position:absolute;z-index:3;left:50%;top:12px;transform:translate(-50%);padding:7px 11px;border-radius:99px;color:#fff;background:#171512aa;font-size:11px;white-space:nowrap;pointer-events:none}.recording-dot{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#ef493a;animation:pulse 1.25s infinite}@keyframes pulse{50%{opacity:.35}}.toolbar{display:flex;gap:10px;margin-top:8px}.toolbar button{flex:1;min-height:48px;margin:0}.modebar{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:8px;padding:4px;border:1px solid var(--line);border-radius:15px;background:#e9e1d4}.modebar button{display:grid;place-items:center;gap:2px;min-height:46px;padding:4px 2px;border:0;border-radius:10px;color:#6e665c;background:transparent;font-size:11px}.modebar button b{font-size:18px;line-height:1}.modebar button.active{color:#fff;background:var(--ink)}.modebar button:disabled{opacity:.38}.brush-sizes{display:flex;align-items:center;justify-content:flex-end;gap:7px;margin:6px 2px 0}.brush-sizes[hidden]{display:none}.brush-sizes>span{margin-right:2px;color:var(--muted);font-size:12px}.brush-sizes button{min-width:44px;min-height:34px;border:1px solid var(--line);border-radius:9px;color:#665e54;background:var(--paper);font-size:12px}.brush-sizes button.active{border-color:var(--ink);color:#fff;background:var(--ink)}.pointer-dot{fill:#ed3e31;stroke:#fff;filter:drop-shadow(0 1px 3px #0008);pointer-events:none}.pointer-dot[hidden]{display:none}.status-line{min-height:22px;margin:12px 2px 0;color:var(--muted);font-size:13px;text-align:center}.review-request{margin-top:14px;padding:13px 14px;border-left:3px solid #bd3d2f66;border-radius:4px 12px 12px 4px;background:#ffffff75}.review-request span{color:var(--red);font-size:11px;font-weight:700}.review-request p{margin:5px 0 0;font-size:14px;line-height:1.55}.image-retry{display:block;width:min(180px,100%);min-height:42px;margin:10px auto 0}.review-history{margin-top:18px}.review-history h2{margin:0 0 9px;font-size:15px}.review-list{display:grid;gap:7px}.review-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:52px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:#fbf8f1b8;text-align:left}.review-item span{display:grid;gap:2px}.review-item b{font-size:13px}.review-item small{color:var(--muted);font-size:11px}.review-item i{color:var(--muted);font-size:12px;font-style:normal;white-space:nowrap}.review-item.active{border-color:#bd3d2f55;background:#fff0ed}.review-item.active i{color:var(--red);font-weight:700}.compact-player{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:12px;padding:9px 10px;border:1px solid var(--line);border-radius:13px;background:#fbf8f1c7}.play-toggle{width:40px;height:40px;border:0;border-radius:50%;color:#fff;background:#416a4d;font-size:15px}.replay-from-start{min-height:34px;padding:4px 7px;border:0;color:var(--muted);background:transparent;font-size:11px}.append-review{min-height:42px;margin-top:8px}.replay-status:empty{display:none}.replay-timeline{min-width:0}.replay-timeline input{display:block;width:100%;height:24px;margin:0;accent-color:var(--red);touch-action:none}.replay-timeline input::-webkit-slider-thumb{width:22px;height:22px}.replay-timeline>div{display:flex;justify-content:space-between;margin-top:1px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.toast{position:fixed;z-index:99;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%,20px);padding:11px 16px;border-radius:12px;color:#fff;background:#25231fee;opacity:0;transition:.2s;pointer-events:none;white-space:nowrap}.toast.show{transform:translate(-50%);opacity:1}.loading-works{display:flex;align-items:center;justify-content:center;gap:9px}.loading-pulse{width:9px;height:9px;border-radius:50%;background:var(--red);animation:pulse 1.1s infinite}.load-error{color:#8d2c24;background:#fff0ed}.sheet-backdrop{position:fixed;z-index:80;inset:0;display:flex;align-items:flex-end;justify-content:center;padding-top:env(safe-area-inset-top);background:#201c176b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.bottom-sheet{overflow:auto;width:min(100%,720px);max-height:min(88dvh,760px);padding:8px 16px calc(18px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;background:var(--paper);box-shadow:0 -16px 42px #201b1644}.sheet-handle{width:38px;height:4px;margin:0 auto 12px;border-radius:99px;background:#c7bfb3}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.sheet-head h2{margin:3px 0 0;font:700 23px/1.2 STKaiti,KaiTi,serif}.sheet-close{width:38px;height:38px;border:0;border-radius:50%;color:var(--muted);background:#ebe4d9;font-size:24px}.sheet-field{display:grid;gap:7px;margin-top:14px;color:var(--ink);font-size:13px;font-weight:650}.sheet-field small{color:var(--muted);font-weight:400}.sheet-field input,.sheet-field textarea{width:100%;border:1px solid #d7cdbd;border-radius:12px;color:var(--ink);background:#fffdf8;padding:12px 13px;font:inherit;resize:none}.sheet-copy{margin:0 0 14px;color:var(--muted);font-size:13px;line-height:1.55}.image-sources{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.image-sources label{position:relative}.source-input{position:absolute;width:1px;height:1px;opacity:0}.image-sources span{display:grid;place-items:center;min-height:44px;border:1px solid #416a4d55;border-radius:11px;color:#31563c;background:#f5f7f1;font-size:13px;font-weight:700}.invitation-sheet{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.pull-refresh{--pull: 0px;position:fixed;z-index:30;left:50%;top:calc(7px + env(safe-area-inset-top));display:flex;align-items:center;gap:6px;min-height:34px;padding:7px 12px;border:1px solid var(--line);border-radius:99px;color:var(--muted);background:#fbf8f1f5;box-shadow:0 4px 14px #2a241a22;opacity:0;transform:translate(-50%,calc(-125% + var(--pull)));transition:opacity .12s,transform .12s;pointer-events:none}.pull-refresh.visible{opacity:1}.pull-refresh.ready{color:var(--red)}.pull-refresh.refreshing{opacity:1;transform:translate(-50%)}.pull-refresh.refreshing span{animation:spin .8s linear infinite}.pull-refresh b{font-size:12px;white-space:nowrap}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:721px){.app{border-inline:1px solid var(--line);background:#f4efe6}.content{padding-inline:24px}.viewer{height:min(54vh,500px);min-height:320px}}.identity-onboarding{max-width:560px}.identity-field{display:grid;gap:8px;margin:24px 0 14px}.identity-field span{color:var(--muted);font-size:14px}.identity-field input{width:100%;box-sizing:border-box;border:1px solid #d7cdbd;border-radius:12px;background:#fffdf7;padding:14px;font:inherit;color:var(--ink)}.identity-onboarding .secondary{width:100%;margin-bottom:10px}
