.ddj-backdrop[data-v-627f6735]{width:var(--shell-w,100%);z-index:0;pointer-events:none;max-width:100%;position:fixed;top:0;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}.ddj-backdrop-decor[data-v-627f6735]{opacity:.22;width:48px;height:48px;position:absolute}.ddj-backdrop-decor svg[data-v-627f6735]{width:100%;height:100%;display:block}.ddj-backdrop-quote[data-v-627f6735]{font-family:var(--font-display);letter-spacing:.06em;color:var(--brand-dark);-webkit-user-select:none;user-select:none;margin:0;font-size:clamp(.92rem,3.6vw,1.05rem);line-height:1.7;position:absolute}.ddj-splash[data-v-39370cc3]{z-index:9999;width:var(--shell-w,100%);max-width:100%;height:100svh;padding:28px 22px calc(28px + var(--safe-bottom,0px));background:linear-gradient(#eef8f1 0%,#f5faf7 42%,#eef4f0 100%);justify-content:center;align-items:center;margin:0;animation:.35s both ddj-in-39370cc3;display:flex;position:fixed;top:0;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}.ddj-splash.leaving[data-v-39370cc3]{pointer-events:none;animation:.4s both ddj-out-39370cc3}.ddj-decor[data-v-39370cc3]{pointer-events:none;width:56px;height:56px;position:absolute}.ddj-decor svg[data-v-39370cc3]{width:100%;height:100%;display:block}.ddj-body[data-v-39370cc3]{z-index:1;text-align:center;width:100%;max-width:100%;padding:8px 4px;position:relative}.ddj-mark[data-v-39370cc3]{letter-spacing:.32em;color:var(--brand);margin-bottom:22px;font-size:.78rem;font-weight:700;display:inline-block}.ddj-text[data-v-39370cc3]{font-family:var(--font-display);color:var(--ink);letter-spacing:.05em;margin:0;font-size:clamp(1.12rem,4.6vw,1.35rem);line-height:1.8}.ddj-meaning[data-v-39370cc3]{color:var(--ink-muted);letter-spacing:.02em;margin:18px 0 0;font-size:.92rem;line-height:1.7}.ddj-chapter[data-v-39370cc3]{color:#7a9184;letter-spacing:.16em;margin-top:22px;font-size:.8rem}@keyframes ddj-in-39370cc3{0%{opacity:0}to{opacity:1}}@keyframes ddj-out-39370cc3{0%{opacity:1}to{opacity:0}}:root{--font-scale:1;--bg:#f3f6f4;--bg-soft:#e8efea;--surface:#fff;--ink:#1a2e24;--ink-muted:#5c7266;--line:#d5e0d9;--brand:#1f7a4c;--brand-dark:#155c38;--brand-soft:#e4f3ea;--accent:#d97706;--accent-soft:#fff4e5;--danger:#c2410c;--danger-soft:#ffeee8;--ok:#15803d;--shadow:0 10px 30px #1a2e2414;--radius:16px;--radius-sm:12px;--safe-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));--safe-bottom:var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px));--safe-left:var(--safe-area-inset-left,env(safe-area-inset-left,0px));--safe-right:var(--safe-area-inset-right,env(safe-area-inset-right,0px));--tab-h:56px;--page-pad:max(16px, var(--safe-left));--page-pad-right:max(16px, var(--safe-right));--shell-w:100%;--font-display:"PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-body:"PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{width:100%;min-width:0;max-width:100%;height:100svh;margin:0;overflow:hidden}html{font-size:calc(16px * var(--font-scale,1))}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(circle at top right, #1f7a4c1f, transparent 36%), linear-gradient(180deg, #eef5f0 0%, var(--bg) 40%, #edf2ef 100%);font-size:1rem}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.page-shell{width:var(--shell-w);max-width:100%;height:100%;margin:0 auto;position:relative;overflow:hidden}.page-shell-content{z-index:1;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;height:100%;position:relative;overflow:hidden auto}.page-shell-content::-webkit-scrollbar{width:0;height:0;display:none}.page{padding:calc(16px + var(--safe-top)) var(--page-pad-right) calc(var(--tab-h) + var(--safe-bottom) + 12px) var(--page-pad);min-width:0;max-width:100%}.role-layout{min-height:100%}.page.profile-page{flex-direction:column;min-height:100svh;display:flex}.page.profile-page>.profile-logout{margin-top:auto;padding-top:16px}.page.auth{min-height:100%;padding:calc(20px + var(--safe-top)) var(--page-pad-right) max(20px, var(--safe-bottom)) var(--page-pad);flex-direction:column;justify-content:flex-start;display:flex}@media (height>=760px){.page.auth{justify-content:center}}.brand-mark{font-family:var(--font-display);letter-spacing:-.03em;color:var(--brand);font-weight:700}.hero-title{font-family:var(--font-display);letter-spacing:-.03em;margin:6px 0 8px;font-size:clamp(1.45rem,5.5vw,2rem);line-height:1.2}.muted{color:var(--ink-muted);line-height:1.6}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;max-width:100%;padding:16px}.card+.card{margin-top:12px}.section-title{justify-content:space-between;align-items:center;gap:12px;min-width:0;margin:0 0 12px;display:flex}.section-title h2{margin:0;font-size:1.05rem}.btn{appearance:none;background:var(--brand);color:#fff;cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;padding:12px 18px;font-weight:600;text-decoration:none;transition:transform .15s,background .15s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--brand-soft);color:var(--brand-dark)}.btn.ghost{color:var(--brand-dark);border:1px solid var(--line);background:0 0}.btn.danger{background:var(--danger)}.btn.block{text-align:center;width:100%;display:block}.btn-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.btn-row .btn{text-align:center;width:100%}.field{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.field label{font-size:.9rem;font-weight:600}.field input,.field textarea,.field select{border:1px solid var(--line);background:#fbfcfb;border-radius:12px;outline:none;width:100%;padding:12px 14px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #1f7a4c1f}.field textarea{resize:vertical;min-height:96px}.error-tip{color:var(--danger);background:var(--danger-soft);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:.9rem}.chip{border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.78rem;font-weight:600;display:inline-flex}.chip.pending{background:var(--accent-soft);color:var(--accent)}.chip.pending_assign{color:#b45309;background:#fff1e0}.chip.quoted{background:var(--accent-soft);color:var(--accent)}.chip.in_progress{background:var(--brand-soft);color:var(--brand-dark)}.chip.wait_confirm{color:#1d4ed8;background:#e8f0ff}.chip.cancelled,.chip.taken_down{background:var(--danger-soft);color:var(--danger)}.chip.completed{color:#1d4ed8;background:#e8f0ff}.empty{text-align:center;color:var(--ink-muted);padding:40px 16px}.empty strong{color:var(--ink);margin-bottom:6px;display:block}.empty-quote{font-family:var(--font-display);letter-spacing:.04em;color:var(--brand-dark);opacity:.72;margin:22px 0 0;font-size:.95rem;line-height:1.7}.empty-quote-meta{letter-spacing:.12em;color:var(--ink-muted);opacity:.8;margin:8px 0 0;font-size:.75rem}.tabbar{width:var(--shell-w);max-width:100%;height:calc(var(--tab-h) + var(--safe-bottom));padding:6px 8px max(6px, var(--safe-bottom));padding-left:max(8px, var(--safe-left));padding-right:max(8px, var(--safe-right));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:20;background:#fffffff0;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tabbar a{color:var(--ink-muted);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;font-size:.7rem;font-weight:600;display:flex}.tabbar a span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.tabbar a.active{color:var(--brand);background:var(--brand-soft)}.tabbar .icon{font-size:1.1rem;line-height:1}.filter-tabs{border:1px solid var(--line);background:#ffffffb3;border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:100%;margin-bottom:14px;padding:4px;display:grid}.filter-tabs.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.filter-tab{appearance:none;color:var(--ink-muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:10px;min-width:0;padding:7px 2px;font-size:clamp(.62rem,2.6vw,.75rem);font-weight:600;position:relative;overflow:hidden}.filter-tab.active{background:var(--brand);color:#fff}.menu-row{border:none;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-width:0;max-width:100%;padding:16px;font-weight:600;display:flex}.menu-row:last-child{border-bottom:none}.list-item{align-items:flex-start;gap:12px;min-width:0;max-width:100%;display:flex}.list-item .body{flex:1;min-width:0}.list-item h3{overflow-wrap:anywhere;margin:0 0 6px;font-size:1rem}.meta{color:var(--ink-muted);overflow-wrap:anywhere;font-size:.85rem;line-height:1.5}.thumb-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.thumb-grid img,.thumb-grid .thumb-add{aspect-ratio:1;object-fit:cover;border:1px solid var(--line);background:var(--bg-soft);border-radius:12px;width:100%}.thumb-add{color:var(--ink-muted);cursor:pointer;justify-content:center;align-items:center;font-size:1.4rem;display:flex}.fade-enter-active,.fade-leave-active{transition:opacity .2s,transform .2s}.fade-enter-from,.fade-leave-to{opacity:0;transform:translateY(6px)}.tabbar .tab-svg{width:22px;height:22px}.tab-count{min-width:1.1em;margin-left:2px;font-size:.7rem;display:inline-block}.dialog-mask{z-index:50;background:#1a2e2459;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog-card{width:min(420px,100%)}.dialog-card h2{margin:0 0 8px;font-size:1.15rem}.star-row{gap:4px;display:flex}.star-btn{appearance:none;color:#c4c4c4;cursor:pointer;background:0 0;border:none;padding:0;font-size:1.4rem;line-height:1}.star-btn.on{color:var(--accent)}.star-btn:disabled{cursor:default}@media (width>=900px){:root{--shell-w:560px}.page-shell{box-shadow:0 0 0 1px var(--line), var(--shadow)}}
