:root{--brand: #66ccff;--brand-soft: #bfe7fb;--pink-soft: #ffd9e8;--orange-soft: #ffe7c9;--ink: #2b2b33;--ink-soft: #55555f;--ink-faint: #9aa0ab;--bg: #fdfcff;--panel: rgba(255, 255, 255, .68);--panel-border: rgba(255, 255, 255, .65);--shadow-card: 0 6px 24px rgba(102, 204, 255, .16), 0 2px 6px rgba(120, 130, 160, .08);--shadow-pop: 0 18px 48px rgba(90, 120, 170, .22), 0 4px 12px rgba(90, 120, 170, .1);--radius-lg: 24px;--radius-md: 16px;font-family:-apple-system,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--ink);background:radial-gradient(1200px 500px at 85% -100px,rgba(255,214,232,.5),transparent 65%),radial-gradient(1100px 480px at -10% 120px,rgba(176,224,250,.55),transparent 60%),radial-gradient(900px 420px at 50% 115%,rgba(255,231,201,.4),transparent 65%),var(--bg);background-attachment:fixed;min-height:100vh;-webkit-font-smoothing:antialiased}button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit;padding:0}input{font-family:inherit}.app-header{position:sticky;top:0;z-index:40;display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 16px 4px}.control-panel{position:relative;display:flex;gap:6px;padding:7px;border-radius:999px;background:var(--panel);border:1px solid var(--panel-border);backdrop-filter:blur(24px) saturate(1.5);-webkit-backdrop-filter:blur(24px) saturate(1.5);box-shadow:var(--shadow-card)}.panel-btn{display:grid;place-items:center;width:42px;height:42px;border-radius:999px;color:var(--ink-soft);transition:background .18s ease,color .18s ease,transform .12s ease}.panel-btn:hover{background:#66ccff29;color:var(--ink)}.panel-btn:active{transform:scale(.92)}.panel-btn:disabled{opacity:.35;cursor:not-allowed}.panel-btn.active{background:#66ccff47;color:var(--ink)}.panel-btn-danger:hover{background:#ff8a9c38;color:#d4486a}.panel-pop{position:absolute;top:calc(100% + 10px);left:0;width:300px;padding:16px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--panel-border);backdrop-filter:blur(28px) saturate(1.6);-webkit-backdrop-filter:blur(28px) saturate(1.6);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:14px;animation:pop-in .18s ease}.slider-row,.storage-row{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:10px}.slider-label{font-size:13px;color:var(--ink-soft)}.slider-value,.storage-value{font-size:13px;font-variant-numeric:tabular-nums;color:var(--ink);min-width:46px;text-align:right}.storage-row{grid-template-columns:64px 1fr}.storage-value{text-align:right;color:var(--ink-faint)}input[type=range]{width:100%;accent-color:var(--brand);height:20px}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer}.switch-row input[type=checkbox]{width:38px;height:22px;accent-color:var(--brand);cursor:pointer}.title-bar{display:flex;align-items:center;gap:10px;max-width:90vw}.paw-btn{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;transition:transform .15s ease}.paw-btn:hover{transform:scale(1.15) rotate(-8deg)}.paw-white{filter:drop-shadow(0 1px 3px rgba(150,170,200,.9))}.title-text{margin:0;font-size:clamp(24px,4vw,38px);font-weight:800;letter-spacing:.02em;text-align:center;cursor:pointer;background:linear-gradient(100deg,#3a3f4c 10%,#2f6f9f 55%,#b0578a 95%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-user-select:none;user-select:none}.title-input{font-size:clamp(22px,3.6vw,34px);font-weight:800;text-align:center;border:2px solid var(--brand);border-radius:14px;padding:4px 14px;outline:none;background:#ffffffd9;color:var(--ink);min-width:280px}.wall-wrap{display:flex;justify-content:center;padding:18px 24px 80px}.wall{position:relative;margin:0 auto}.card-tile{position:absolute;overflow:visible;transform-origin:center}.card-tile.jelly-in{opacity:0;animation:jelly-in .72s cubic-bezier(.34,1.45,.5,1) forwards}.card-tile.card-fade{opacity:0;animation:card-fade .3s ease forwards}@keyframes jelly-in{0%{opacity:0;transform:scale(.55)}45%{opacity:1;transform:scale(1.07,.93)}62%{transform:scale(.96,1.05)}78%{transform:scale(1.025,.975)}to{opacity:1;transform:scale(1)}}@keyframes card-fade{to{opacity:1}}.card-cover{position:absolute;inset:0;overflow:hidden;cursor:pointer;box-shadow:var(--shadow-card);outline:1px solid rgba(255,255,255,.7);outline-offset:-1px;transition:transform .16s ease,box-shadow .16s ease}.card-cover:hover{transform:translateY(-2px);box-shadow:0 10px 30px #66ccff47,0 3px 8px #7882a01a}.card-cover img{width:100%;height:100%;display:block;object-fit:fill;-webkit-user-select:none;user-select:none}.cover-fallback{width:100%;height:100%}.cover-placeholder{position:relative;width:100%;height:100%;background:linear-gradient(155deg,#a8d9f5,#c3e6fb 34%,#ddeffc 62%,#d9ecfa 78%,#cfe9f9);overflow:hidden}.cover-gloss{position:absolute;left:-20%;top:-28%;width:140%;height:46%;background:linear-gradient(180deg,#ffffff8c,#ffffff0f);border-radius:0 0 50% 50%/0 0 100% 100%;transform:rotate(-7deg);pointer-events:none}.meta-layer{position:absolute;left:0;right:0;cursor:pointer;backdrop-filter:blur(10px) saturate(1.35);-webkit-backdrop-filter:blur(10px) saturate(1.35);background:linear-gradient(to bottom,#ffffff80,#ffffff9e)}.meta-full{bottom:0;border-radius:0}.meta-capsule{left:50%;right:auto;transform:translate(-50%);border-radius:999px;background:#ffffff8c;display:flex;align-items:flex-start;white-space:nowrap}.meta-layer:hover{background:linear-gradient(to bottom,#ffffff8f,#ffffffad)}.meta-layer.meta-empty{bottom:0;background:linear-gradient(to bottom,#ffffff38,#ffffff57)}.meta-layer.meta-empty:hover{background:linear-gradient(to bottom,#fff6,#ffffff8c)}.meta-empty-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ink-faint);opacity:0;transition:opacity .16s ease;pointer-events:none}.meta-layer.meta-empty:hover .meta-empty-hint{opacity:.85}.meta-lines{display:flex;flex-direction:column;min-width:0;flex:1}.meta-attitude{font-weight:700;color:var(--ink);line-height:1.22;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-name{font-weight:500;color:var(--ink-soft);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-badge{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center}.meta-badge-inline{position:relative;top:auto;transform:none;flex:none}.type-badge{display:block;border-radius:999px}.card-tile-separated{filter:drop-shadow(0 6px 18px rgba(102,204,255,.18)) drop-shadow(0 2px 5px rgba(120,130,160,.1))}.card-tile-separated .card-cover{box-shadow:none}.card-tile-separated .card-cover:hover{transform:none}.meta-strip{position:absolute;left:0;right:0;background:#fffffff5;border-top:1px solid rgba(160,200,235,.35);cursor:pointer}.meta-strip:hover{background:#fff}.meta-strip.meta-strip-empty{background:#ffffff8c}.meta-strip.meta-strip-empty:hover{background:#ffffffd9}.modal-overlay{position:fixed;inset:0;z-index:100;background:#262c3c57;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:grid;place-items:center;animation:overlay-in .16s ease;padding:20px}@keyframes overlay-in{0%{opacity:0}}.search-modal{position:relative;width:min(860px,96vw);max-height:88vh;display:flex;flex-direction:column;gap:14px;padding:22px;border-radius:var(--radius-lg);background:#ffffffdb;border:1px solid var(--panel-border);backdrop-filter:blur(32px) saturate(1.6);-webkit-backdrop-filter:blur(32px) saturate(1.6);box-shadow:var(--shadow-pop);animation:pop-in .2s cubic-bezier(.3,1.25,.5,1)}.edit-modal,.confirm-modal{position:relative;width:min(460px,94vw);padding:24px;border-radius:var(--radius-lg);background:#ffffffe0;border:1px solid var(--panel-border);backdrop-filter:blur(32px) saturate(1.6);-webkit-backdrop-filter:blur(32px) saturate(1.6);box-shadow:var(--shadow-pop);animation:pop-in .2s cubic-bezier(.3,1.25,.5,1)}@keyframes pop-in{0%{opacity:0;transform:scale(.92) translateY(10px)}}.modal-close{position:absolute;top:14px;right:14px;width:32px;height:32px;display:grid;place-items:center;border-radius:999px;color:var(--ink-faint);transition:background .15s ease,color .15s ease}.modal-close:hover{background:#7882a01f;color:var(--ink)}.segmented{align-self:center;display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:#e2eaf6a6;border:1px solid rgba(255,255,255,.7)}.segment{padding:7px 16px;border-radius:999px;font-size:13.5px;font-weight:600;color:var(--ink-soft);transition:background .16s ease,color .16s ease,box-shadow .16s ease;white-space:nowrap}.segment.active{background:#fff;color:var(--ink);box-shadow:0 2px 8px #5a78aa2e}.type-seg{flex-wrap:wrap;justify-content:center;border-radius:22px}.search-row{display:flex;gap:10px}.search-input{flex:1;padding:11px 18px;border-radius:999px;border:1.5px solid rgba(140,170,210,.35);background:#ffffffbf;font-size:14.5px;outline:none;color:var(--ink);transition:border-color .16s ease,box-shadow .16s ease}.search-input:focus{border-color:var(--brand);box-shadow:0 0 0 4px #66ccff2e}.search-input::placeholder{color:var(--ink-faint)}.btn{padding:10px 22px;border-radius:999px;font-size:14px;font-weight:700;transition:transform .12s ease,box-shadow .16s ease,background .16s ease}.btn:active{transform:scale(.95)}.btn-primary{color:#fff;background:linear-gradient(135deg,#7ed0ff,#5db9f5);box-shadow:0 4px 14px #66ccff73}.btn-primary:hover{box-shadow:0 6px 18px #6cf9}.btn-primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn-ghost{color:var(--ink-soft);background:#8ca0be1f}.btn-ghost:hover{background:#8ca0be33}.btn-danger{color:#fff;background:linear-gradient(135deg,#ff93a8,#f56a86);box-shadow:0 4px 14px #f56a8666}.candidate-list{flex:1;min-height:220px;max-height:52vh;overflow-y:auto;border-radius:var(--radius-md);padding:4px;scrollbar-width:thin}.candidate-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.candidate-cell{display:flex;flex-direction:column;gap:6px;padding:7px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(230,238,248,.9);transition:transform .14s ease,box-shadow .14s ease;text-align:left}.candidate-cell:hover{transform:translateY(-2px);box-shadow:0 8px 20px #66ccff3d}.candidate-thumb{display:block;width:100%;aspect-ratio:3 / 4;border-radius:10px;overflow:hidden;background:linear-gradient(150deg,#e8f4fd,#f5f9ff);display:grid;place-items:center}.candidate-thumb img{width:100%;height:100%;object-fit:contain}.candidate-noimg{font-size:12px;color:var(--ink-faint)}.candidate-name{font-size:12.5px;line-height:1.35;color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}.candidate-skeleton{min-height:150px;background:linear-gradient(100deg,#e2ecf6b3 40%,#f4faffe6,#e2ecf6b3 60%);background-size:200% 100%;animation:shimmer 1.1s infinite linear;border:none}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-80% 0}}.candidate-state{display:flex;flex-direction:column;align-items:center;gap:14px;padding:56px 0 30px;color:var(--ink-faint);font-size:14px}.sentinel{height:1px}.local-pane{display:flex;flex-direction:column;align-items:center;gap:18px;padding:46px 20px 30px}.local-hint{margin:0;max-width:520px;text-align:center;font-size:13.5px;line-height:1.7;color:var(--ink-faint)}.local-pick{font-size:15px;padding:12px 30px}.destroy-row{display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:2px}.destroy-btn{width:46px;height:46px;display:grid;place-items:center;border-radius:999px;background:linear-gradient(145deg,#ff8ba0,#f25f7f);box-shadow:0 6px 16px #f25f7f73;transition:transform .14s ease,box-shadow .14s ease}.destroy-btn:hover{transform:translateY(-2px) rotate(-6deg);box-shadow:0 9px 22px #f25f7f8c}.destroy-btn:active{transform:scale(.9)}.destroy-label{font-size:12px;color:#e56d88;font-weight:600}.edit-title{margin:0 0 18px;font-size:19px;font-weight:800;text-align:center}.field-row{display:grid;grid-template-columns:76px 1fr;align-items:center;gap:12px;margin-bottom:14px}.field-label{font-size:13.5px;font-weight:600;color:var(--ink-soft)}.field-combo{position:relative;display:flex;align-items:center;gap:6px}.combo-disabled{opacity:.55}.combo-disabled .field-input{cursor:not-allowed}.field-input{flex:1;min-width:0;padding:10px 14px;border-radius:12px;border:1.5px solid rgba(140,170,210,.35);background:#fffc;font-size:14px;outline:none;color:var(--ink);transition:border-color .16s ease,box-shadow .16s ease}.field-input:focus{border-color:var(--brand);box-shadow:0 0 0 4px #66ccff2e}.combo-btn{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;color:var(--ink-soft);background:#e2eaf699;transition:background .15s ease}.combo-btn:hover:not(:disabled){background:#cedef4cc}.combo-btn:disabled{cursor:not-allowed;opacity:.5}.combo-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:30;margin:0;padding:6px;list-style:none;width:max(100%,180px);max-height:264px;overflow-y:auto;border-radius:14px;background:#fffffff2;border:1px solid rgba(230,238,248,.9);box-shadow:var(--shadow-pop);animation:pop-in .16s ease}.combo-item{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:9px;font-size:13.5px;color:var(--ink-soft);transition:background .12s ease}.combo-item:hover{background:#66ccff24}.combo-item.selected{background:#66ccff38;color:var(--ink);font-weight:700}.edit-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.confirm-title{margin:0 0 10px;font-size:18px;font-weight:800;text-align:center}.confirm-message{margin:0 0 22px;font-size:13.5px;line-height:1.7;color:var(--ink-soft);text-align:center}.confirm-actions{display:flex;justify-content:center;gap:12px}.toast-stack{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{padding:10px 20px;border-radius:999px;font-size:13.5px;font-weight:600;max-width:78vw;background:#ffffffe6;backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);border:1px solid rgba(255,255,255,.7);box-shadow:var(--shadow-card);color:var(--ink);animation:toast-in .22s cubic-bezier(.3,1.3,.5,1)}.toast-error{background:#fff3f5f0;border-color:#ffb6c5cc;color:#c4455f}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px) scale(.95)}}@media(max-width:720px){.candidate-grid{grid-template-columns:repeat(3,1fr)}.field-row{grid-template-columns:1fr;gap:6px}}
