#app-root[data-v-aacae5f8]{min-height:100vh;display:flex;flex-direction:column}.home-layout[data-v-717c361f]{display:flex;flex-direction:column;min-height:100vh}.header[data-v-717c361f]{background:linear-gradient(135deg,#667eea,#764ba2);padding:0 32px;box-shadow:0 2px 12px #00000026;position:sticky;top:0;z-index:100}.header-inner[data-v-717c361f]{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}.site-title[data-v-717c361f]{font-size:22px;font-weight:700;color:#fff;margin:0;letter-spacing:1px}.nav-links[data-v-717c361f]{display:flex;gap:12px}.nav-btn[data-v-717c361f]{color:#fff;text-decoration:none;padding:8px 20px;border-radius:6px;font-size:15px;font-weight:500;transition:background .25s,transform .15s;background:#ffffff1f}.nav-btn[data-v-717c361f]:hover{background:#ffffff40;transform:translateY(-1px)}.nav-btn.router-link-exact-active[data-v-717c361f]{background:#ffffff4d}.main-content[data-v-717c361f]{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 32px;background:#f0f2f5}.card-container[data-v-717c361f]{display:flex;gap:32px;max-width:1200px;width:100%;justify-content:center;flex-wrap:wrap}.card[data-v-717c361f]{background:#fff;border-radius:16px;padding:48px 36px;width:280px;text-align:center;text-decoration:none;color:inherit;box-shadow:0 4px 24px #00000014;transition:transform .3s,box-shadow .3s;cursor:pointer}.card[data-v-717c361f]:hover{transform:translateY(-8px);box-shadow:0 12px 36px #667eea40}.card-icon[data-v-717c361f]{font-size:48px;margin-bottom:20px}.card-title[data-v-717c361f]{font-size:20px;font-weight:600;color:#333;margin:0 0 12px}.card-desc[data-v-717c361f]{font-size:14px;color:#888;margin:0;line-height:1.6}.footer[data-v-717c361f]{text-align:center;padding:20px;background:#fff;color:#999;font-size:13px;border-top:1px solid #eee}@media (max-width: 768px){.card-container[data-v-717c361f]{flex-direction:column;align-items:center}.card[data-v-717c361f]{width:100%;max-width:320px}.header-inner[data-v-717c361f]{flex-direction:column;height:auto;padding:16px 0;gap:12px}}.page-layout[data-v-af17a08b]{display:flex;flex-direction:column;min-height:100vh}.header[data-v-af17a08b]{background:linear-gradient(135deg,#667eea,#764ba2);padding:0 32px;box-shadow:0 2px 12px #00000026;position:sticky;top:0;z-index:100}.header-inner[data-v-af17a08b]{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}.site-title[data-v-af17a08b]{font-size:22px;font-weight:700;color:#fff;margin:0;letter-spacing:1px}.nav-links[data-v-af17a08b]{display:flex;gap:12px}.nav-btn[data-v-af17a08b]{color:#fff;text-decoration:none;padding:8px 20px;border-radius:6px;font-size:15px;font-weight:500;transition:background .25s;background:#ffffff1f}.nav-btn[data-v-af17a08b]:hover{background:#ffffff40}.page-content[data-v-af17a08b]{flex:1;display:flex;flex-direction:column;align-items:center;padding:40px 32px 56px;background:#f0f2f5}.page-title[data-v-af17a08b]{font-size:30px;font-weight:700;color:#333;margin-bottom:32px}.status-box[data-v-af17a08b]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:64px 0;color:#888;font-size:15px}.status-box.error[data-v-af17a08b]{color:#e74c3c}.error-code[data-v-af17a08b]{font-size:40px;font-weight:700;opacity:.3}.retry-btn[data-v-af17a08b]{padding:8px 24px;border:none;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:14px;cursor:pointer;transition:opacity .2s}.retry-btn[data-v-af17a08b]:hover{opacity:.85}.spinner[data-v-af17a08b]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-af17a08b .8s linear infinite}@keyframes spin-af17a08b{to{transform:rotate(360deg)}}.card-list[data-v-af17a08b]{display:flex;flex-direction:column;gap:24px;width:100%;max-width:800px}.card[data-v-af17a08b]{background:#fff;border-radius:14px;box-shadow:0 2px 16px #0000000f;overflow:hidden;transition:box-shadow .3s}.card[data-v-af17a08b]:hover{box-shadow:0 6px 28px #667eea2e}.card-header[data-v-af17a08b]{display:flex;align-items:center;gap:12px;padding:20px 28px;border-bottom:1px solid #f0f0f0}.card-header h3[data-v-af17a08b]{font-size:18px;font-weight:600;color:#333;margin:0}.card-icon[data-v-af17a08b]{font-size:24px}.card-body[data-v-af17a08b]{padding:24px 28px}.skill-tags[data-v-af17a08b]{display:flex;flex-wrap:wrap;gap:10px}.tag[data-v-af17a08b]{background:linear-gradient(135deg,#667eea22,#764ba222);color:#555;padding:6px 16px;border-radius:20px;font-size:14px;font-weight:500;border:1px solid #667eea33}.timeline[data-v-af17a08b]{position:relative;padding-left:24px}.timeline-item[data-v-af17a08b]{position:relative}.timeline-dot[data-v-af17a08b]{position:absolute;left:-24px;top:6px;width:10px;height:10px;border-radius:50%;background:#667eea;border:2px solid #fff;box-shadow:0 0 0 3px #667eea44}.timeline-content h4[data-v-af17a08b]{font-size:16px;font-weight:600;color:#333;margin:0 0 4px}.timeline-date[data-v-af17a08b]{font-size:13px;color:#999}.timeline-content p[data-v-af17a08b]{margin:8px 0 0;font-size:14px;color:#666;line-height:1.7}.project-item h4[data-v-af17a08b]{font-size:16px;font-weight:600;color:#333;margin:0 0 4px}.project-date[data-v-af17a08b]{font-size:13px;color:#999}.project-item p[data-v-af17a08b]{margin:8px 0 0;font-size:14px;color:#666;line-height:1.7}.divider[data-v-af17a08b]{height:1px;background:#f0f0f0;margin:20px 0}.stack-grid[data-v-af17a08b]{display:grid;grid-template-columns:1fr 1fr;gap:20px}.stack-item[data-v-af17a08b]{background:#fafafa;border-radius:10px;padding:16px 20px}.stack-item h4[data-v-af17a08b]{font-size:15px;font-weight:600;color:#667eea;margin:0 0 8px}.stack-item p[data-v-af17a08b]{font-size:14px;color:#666;line-height:1.6;margin:0}@media (max-width: 600px){.stack-grid[data-v-af17a08b]{grid-template-columns:1fr}}.footer[data-v-af17a08b]{text-align:center;padding:20px;background:#fff;color:#999;font-size:13px;border-top:1px solid #eee}.page-layout[data-v-73b79c0a]{display:flex;flex-direction:column;min-height:100vh}.header[data-v-73b79c0a]{background:linear-gradient(135deg,#667eea,#764ba2);padding:0 32px;box-shadow:0 2px 12px #00000026;position:sticky;top:0;z-index:100}.header-inner[data-v-73b79c0a]{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}.site-title[data-v-73b79c0a]{font-size:22px;font-weight:700;color:#fff;margin:0;letter-spacing:1px}.nav-links[data-v-73b79c0a]{display:flex;gap:12px}.nav-btn[data-v-73b79c0a]{color:#fff;text-decoration:none;padding:8px 20px;border-radius:6px;font-size:15px;font-weight:500;transition:background .25s;background:#ffffff1f}.nav-btn[data-v-73b79c0a]:hover{background:#ffffff40}.page-content[data-v-73b79c0a]{flex:1;display:flex;flex-direction:column;align-items:center;padding:40px 32px 56px;background:#f0f2f5}.page-title[data-v-73b79c0a]{font-size:30px;font-weight:700;color:#333;margin-bottom:32px}.status-box[data-v-73b79c0a]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:64px 0;color:#888;font-size:15px}.status-box.error[data-v-73b79c0a]{color:#e74c3c}.error-code[data-v-73b79c0a]{font-size:40px;font-weight:700;opacity:.3}.retry-btn[data-v-73b79c0a]{padding:8px 24px;border:none;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:14px;cursor:pointer}.retry-btn[data-v-73b79c0a]:hover{opacity:.85}.spinner[data-v-73b79c0a]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-73b79c0a .8s linear infinite}@keyframes spin-73b79c0a{to{transform:rotate(360deg)}}.blog-list[data-v-73b79c0a]{display:flex;flex-direction:column;gap:20px;width:100%;max-width:800px}.blog-card[data-v-73b79c0a]{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 2px 16px #0000000f;cursor:pointer;transition:transform .25s,box-shadow .25s}.blog-card[data-v-73b79c0a]:hover{transform:translateY(-4px);box-shadow:0 8px 30px #667eea33}.blog-cover[data-v-73b79c0a]{width:100%;height:200px;object-fit:cover;display:block}.blog-info[data-v-73b79c0a]{padding:24px 28px}.blog-title[data-v-73b79c0a]{font-size:20px;font-weight:700;color:#333;margin:0 0 8px;line-height:1.4}.blog-subtitle[data-v-73b79c0a]{font-size:15px;color:#667eea;margin:0 0 12px;font-weight:500}.blog-excerpt[data-v-73b79c0a]{font-size:14px;color:#666;line-height:1.7;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.blog-date[data-v-73b79c0a]{font-size:13px;color:#aaa}.pagination[data-v-73b79c0a]{display:flex;align-items:center;gap:16px;margin-top:36px;flex-wrap:wrap;justify-content:center}.page-btn[data-v-73b79c0a]{padding:8px 20px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:14px;cursor:pointer;transition:all .2s}.page-btn[data-v-73b79c0a]:hover:not(:disabled){border-color:#667eea;color:#667eea}.page-btn[data-v-73b79c0a]:disabled{opacity:.4;cursor:not-allowed}.page-numbers[data-v-73b79c0a]{display:flex;gap:6px}.page-num[data-v-73b79c0a]{width:36px;height:36px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:14px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.page-num[data-v-73b79c0a]:hover{border-color:#667eea;color:#667eea}.page-num.active[data-v-73b79c0a]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.page-jump[data-v-73b79c0a]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.page-jump input[data-v-73b79c0a]{width:50px;height:36px;border:1px solid #ddd;border-radius:6px;text-align:center;font-size:14px;outline:none}.page-jump input[data-v-73b79c0a]:focus{border-color:#667eea}.jump-btn[data-v-73b79c0a]{padding:6px 14px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:13px;cursor:pointer;transition:all .2s}.jump-btn[data-v-73b79c0a]:hover{border-color:#667eea;color:#667eea}.footer[data-v-73b79c0a]{text-align:center;padding:20px;background:#fff;color:#999;font-size:13px;border-top:1px solid #eee}.detail-page[data-v-aba55fd3]{min-height:100vh;background:#f0f2f5;padding:32px}.back-btn[data-v-aba55fd3]{display:inline-flex;align-items:center;gap:6px;padding:10px 22px;border:none;border-radius:8px;background:#fff;color:#555;font-size:15px;cursor:pointer;box-shadow:0 2px 8px #0000000f;transition:all .2s;margin-bottom:28px}.back-btn[data-v-aba55fd3]:hover{color:#667eea;box-shadow:0 4px 16px #667eea26}.back-arrow[data-v-aba55fd3]{font-size:18px}.status-box[data-v-aba55fd3]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:80px 0;color:#888;font-size:15px}.status-box.error[data-v-aba55fd3]{color:#e74c3c}.error-code[data-v-aba55fd3]{font-size:40px;font-weight:700;opacity:.3}.retry-btn[data-v-aba55fd3]{padding:8px 24px;border:none;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:14px;cursor:pointer}.retry-btn[data-v-aba55fd3]:hover{opacity:.85}.spinner[data-v-aba55fd3]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-aba55fd3 .8s linear infinite}@keyframes spin-aba55fd3{to{transform:rotate(360deg)}}.article[data-v-aba55fd3]{max-width:800px;margin:0 auto;background:#fff;border-radius:16px;padding:48px 44px;box-shadow:0 2px 16px #0000000f}.article-title[data-v-aba55fd3]{font-size:28px;font-weight:700;color:#222;margin:0 0 12px;line-height:1.4}.article-subtitle[data-v-aba55fd3]{font-size:17px;color:#667eea;font-weight:500;margin:0 0 12px}.article-date[data-v-aba55fd3]{font-size:13px;color:#aaa;display:block;margin-bottom:28px}.article-cover[data-v-aba55fd3]{width:100%;border-radius:10px;margin-bottom:32px;display:block}.article-body[data-v-aba55fd3]{font-size:16px;color:#444;line-height:1.9;white-space:pre-wrap}@media (max-width: 600px){.detail-page[data-v-aba55fd3]{padding:16px}.article[data-v-aba55fd3]{padding:28px 20px}.article-title[data-v-aba55fd3]{font-size:22px}}.page-layout[data-v-229be2c7]{display:flex;flex-direction:column;min-height:100vh}.header[data-v-229be2c7]{background:linear-gradient(135deg,#667eea,#764ba2);padding:0 32px;box-shadow:0 2px 12px #00000026;position:sticky;top:0;z-index:100}.header-inner[data-v-229be2c7]{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}.site-title[data-v-229be2c7]{font-size:22px;font-weight:700;color:#fff;margin:0;letter-spacing:1px}.nav-links[data-v-229be2c7]{display:flex;gap:12px}.nav-btn[data-v-229be2c7]{color:#fff;text-decoration:none;padding:8px 20px;border-radius:6px;font-size:15px;font-weight:500;transition:background .25s;background:#ffffff1f}.nav-btn[data-v-229be2c7]:hover{background:#ffffff40}.page-content[data-v-229be2c7]{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 32px;background:#f0f2f5}.page-title[data-v-229be2c7]{font-size:32px;font-weight:700;color:#333}.footer[data-v-229be2c7]{text-align:center;padding:20px;background:#fff;color:#999;font-size:13px;border-top:1px solid #eee}.dialog-mask[data-v-00f55477]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:fade-in-00f55477 .18s ease}.dialog[data-v-00f55477]{background:#fff;border-radius:12px;width:100%;box-shadow:0 20px 50px #00000040;display:flex;flex-direction:column;max-height:calc(100vh - 48px);animation:dialog-in-00f55477 .2s ease}@keyframes fade-in-00f55477{0%{opacity:0}to{opacity:1}}@keyframes dialog-in-00f55477{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.dialog-head[data-v-00f55477]{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid #f0f0f0}.dialog-head h3[data-v-00f55477]{font-size:17px;font-weight:600;color:#333;margin:0}.close-btn[data-v-00f55477]{width:28px;height:28px;border:none;border-radius:6px;background:transparent;font-size:22px;color:#999;cursor:pointer;line-height:1;transition:background .2s,color .2s}.close-btn[data-v-00f55477]:hover:not(:disabled){background:#f5f5f5;color:#333}.close-btn[data-v-00f55477]:disabled{cursor:not-allowed;opacity:.5}.dialog-body[data-v-00f55477]{padding:22px 24px;overflow-y:auto}.dialog-foot[data-v-00f55477]{padding:14px 24px;border-top:1px solid #f0f0f0;display:flex;justify-content:flex-end;gap:10px}.btn[data-v-00f55477]{border:none;border-radius:6px;padding:8px 18px;font-size:14px;cursor:pointer;transition:all .2s;background:#f0f2f5;color:#555}.btn[data-v-00f55477]:hover:not(:disabled){background:#e6e9ee}.btn[data-v-00f55477]:disabled{opacity:.55;cursor:not-allowed}.btn.primary[data-v-00f55477]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn.primary[data-v-00f55477]:hover:not(:disabled){opacity:.9}.btn.ghost[data-v-00f55477]{background:transparent;border:1px solid #ddd}.btn.ghost[data-v-00f55477]:hover:not(:disabled){background:#fafafa;border-color:#bbb}.dashboard[data-v-77ec6402]{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar[data-v-77ec6402]{display:flex;align-items:center;height:56px;padding:0 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;flex-shrink:0;gap:18px}.topbar-title[data-v-77ec6402]{font-size:18px;font-weight:700;margin:0;letter-spacing:1px}.topbar-time[data-v-77ec6402]{margin-left:auto;font-size:13px;font-family:Courier New,Courier,monospace;opacity:.9}.topbar-user[data-v-77ec6402]{display:flex;align-items:center;gap:8px;font-size:14px;background:#ffffff29;padding:4px 12px;border-radius:20px}.user-avatar[data-v-77ec6402]{font-size:14px}.user-role[data-v-77ec6402]{font-size:12px;background:#ffffff38;padding:1px 8px;border-radius:10px}.topbar-back[data-v-77ec6402],.topbar-logout[data-v-77ec6402]{font-size:14px;padding:6px 16px;border-radius:6px;background:#ffffff26;border:none;color:#fff;cursor:pointer;transition:background .2s}.topbar-back[data-v-77ec6402]{text-decoration:none}.topbar-back[data-v-77ec6402]:hover,.topbar-logout[data-v-77ec6402]:hover{background:#ffffff4d}.dashboard-body[data-v-77ec6402]{display:flex;flex:1;overflow:hidden}.sidebar[data-v-77ec6402]{width:220px;background:#fff;border-right:1px solid #e8e8e8;flex-shrink:0;padding:16px 0;overflow-y:auto}.menu[data-v-77ec6402]{display:flex;flex-direction:column;gap:4px;padding:0 12px}.menu-item[data-v-77ec6402]{display:flex;align-items:center;gap:10px;width:100%;padding:12px 16px;border:none;border-radius:8px;background:transparent;color:#555;font-size:15px;cursor:pointer;transition:all .2s;text-align:left}.menu-item[data-v-77ec6402]:hover{background:#f5f5f5;color:#333}.menu-item.active[data-v-77ec6402]{background:linear-gradient(135deg,#667eea15,#764ba215);color:#667eea;font-weight:600}.menu-icon[data-v-77ec6402]{font-size:18px;flex-shrink:0}.content[data-v-77ec6402]{flex:1;background:#f0f2f5;padding:28px 32px;overflow-y:auto;position:relative}.content-panel[data-v-77ec6402]{background:#fff;border-radius:12px;padding:28px 32px;box-shadow:0 2px 12px #0000000d;min-height:200px}.content-panel h2[data-v-77ec6402]{font-size:22px;font-weight:700;color:#333;margin:0 0 20px;padding-bottom:16px;border-bottom:1px solid #f0f0f0}.block-title[data-v-77ec6402]{font-size:16px;font-weight:600;color:#333;margin:0}.btn[data-v-77ec6402]{border:none;border-radius:6px;padding:8px 16px;font-size:14px;cursor:pointer;transition:all .2s;background:#f0f2f5;color:#555}.btn[data-v-77ec6402]:hover:not(:disabled){background:#e6e9ee}.btn[data-v-77ec6402]:disabled{opacity:.55;cursor:not-allowed}.btn.primary[data-v-77ec6402]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn.primary[data-v-77ec6402]:hover:not(:disabled){opacity:.9}.btn.danger[data-v-77ec6402]{background:#fdecea;color:#e74c3c}.btn.danger[data-v-77ec6402]:hover:not(:disabled){background:#fbd9d4}.btn.ghost[data-v-77ec6402]{background:transparent;border:1px solid #ddd}.btn.ghost[data-v-77ec6402]:hover{background:#fafafa;border-color:#bbb}.btn.small[data-v-77ec6402]{padding:4px 12px;font-size:13px}.form-grid[data-v-77ec6402]{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}.form-grid--narrow[data-v-77ec6402]{grid-template-columns:1fr;max-width:420px}.field[data-v-77ec6402]{display:flex;flex-direction:column;gap:6px}.field.full[data-v-77ec6402]{grid-column:1 / -1}.field-label[data-v-77ec6402]{font-size:13px;color:#666;font-weight:500}.field-input[data-v-77ec6402]{height:38px;border:1px solid #ddd;border-radius:6px;padding:0 12px;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s;background:#fafafa;font-family:inherit}.field-input[data-v-77ec6402]:focus{border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea26}.field-input[data-v-77ec6402]:disabled,.field-input--disabled[data-v-77ec6402]{background:#ececec;color:#888;cursor:not-allowed}.field-textarea[data-v-77ec6402]{height:auto;min-height:80px;padding:10px 12px;resize:vertical;line-height:1.6}.form-actions[data-v-77ec6402]{margin-top:20px;display:flex;gap:12px}.info-block[data-v-77ec6402]{background:#fafafa;border-radius:8px;padding:16px 20px;margin-bottom:28px}.info-row[data-v-77ec6402]{display:flex;align-items:center;padding:10px 0;border-bottom:1px dashed #eee}.info-row[data-v-77ec6402]:last-child{border-bottom:none}.info-label[data-v-77ec6402]{width:90px;font-size:14px;color:#888}.info-value[data-v-77ec6402]{font-size:15px;color:#333;font-weight:500}.form-block[data-v-77ec6402]{border-top:1px solid #f0f0f0;padding-top:24px}.hint[data-v-77ec6402]{margin-top:14px;font-size:12px;color:#999}.hint code[data-v-77ec6402]{background:#f4f4f4;padding:1px 6px;border-radius:4px;font-family:Courier New,monospace}.sub-tabs[data-v-77ec6402]{display:flex;align-items:center;gap:6px;margin-bottom:22px;border-bottom:1px solid #f0f0f0;padding-bottom:12px}.sub-tab[data-v-77ec6402]{border:none;background:transparent;padding:6px 16px;border-radius:6px;font-size:14px;color:#666;cursor:pointer;transition:all .2s}.sub-tab[data-v-77ec6402]:hover{background:#f5f5f5;color:#333}.sub-tab.active[data-v-77ec6402]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:600}.reload[data-v-77ec6402]{margin-left:auto}.list-block[data-v-77ec6402]{animation:fade-in-77ec6402 .18s ease}@keyframes fade-in-77ec6402{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.list-toolbar[data-v-77ec6402]{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px}.skill-add[data-v-77ec6402]{display:flex;gap:8px;width:360px}.skill-add .field-input[data-v-77ec6402]{flex:1}.empty-tip[data-v-77ec6402]{text-align:center;color:#aaa;padding:60px 0;font-size:14px}.grid-list[data-v-77ec6402]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.item-card[data-v-77ec6402]{background:#fafafa;border:1px solid #eee;border-radius:10px;padding:16px 18px;transition:box-shadow .2s,transform .2s}.item-card[data-v-77ec6402]:hover{box-shadow:0 4px 14px #667eea1f;transform:translateY(-2px)}.item-card__head[data-v-77ec6402]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.item-card h4[data-v-77ec6402]{font-size:15px;color:#333;margin:0;font-weight:600}.item-actions[data-v-77ec6402]{display:flex;gap:6px;flex-shrink:0}.meta[data-v-77ec6402]{font-size:13px;color:#999;margin:0 0 8px}.desc[data-v-77ec6402]{font-size:13px;color:#666;line-height:1.6;margin:0}.skill-tags[data-v-77ec6402]{display:flex;flex-wrap:wrap;gap:10px}.skill-tag[data-v-77ec6402]{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#667eea22,#764ba222);color:#555;padding:6px 8px 6px 16px;border-radius:18px;font-size:14px;border:1px solid #667eea33}.tag-remove[data-v-77ec6402]{width:20px;height:20px;border-radius:50%;border:none;background:#e74c3c1f;color:#e74c3c;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s}.tag-remove[data-v-77ec6402]:hover{background:#e74c3c;color:#fff}.data-table[data-v-77ec6402]{width:100%;border-collapse:collapse;font-size:14px}.data-table th[data-v-77ec6402],.data-table td[data-v-77ec6402]{padding:12px 14px;text-align:left;border-bottom:1px solid #f0f0f0}.data-table thead[data-v-77ec6402]{background:#fafafa;color:#666;font-weight:600;font-size:13px}.data-table tbody tr[data-v-77ec6402]:hover{background:#fafbff}.data-table .col-id[data-v-77ec6402]{width:60px}.data-table .col-date[data-v-77ec6402]{width:170px;color:#888;font-family:Courier New,monospace;font-size:12px}.data-table .col-actions[data-v-77ec6402]{width:160px}.data-table .col-role[data-v-77ec6402]{width:110px}.data-table .cell-title[data-v-77ec6402]{font-weight:600;color:#333}.data-table .cell-subtitle[data-v-77ec6402]{color:#888}.section-desc[data-v-77ec6402]{color:#888;font-size:13px;margin:-10px 0 18px;line-height:1.7}.role-badge[data-v-77ec6402]{display:inline-block;font-size:12px;padding:2px 10px;border-radius:10px;font-weight:600;letter-spacing:.5px}.role-badge.root[data-v-77ec6402]{background:linear-gradient(135deg,#ff8a00,#e52e71);color:#fff;margin-left:8px;vertical-align:middle}.role-badge.user[data-v-77ec6402]{background:#e9eefc;color:#667eea}.self-tag[data-v-77ec6402]{margin-left:6px;font-size:11px;background:#d6f3e1;color:#2a8a4f;padding:1px 8px;border-radius:8px;font-weight:500}.status-box[data-v-77ec6402]{display:flex;flex-direction:column;align-items:center;gap:14px;padding:64px 0;color:#888;font-size:14px}.status-box.error[data-v-77ec6402]{color:#e74c3c}.spinner[data-v-77ec6402]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-77ec6402 .8s linear infinite}@keyframes spin-77ec6402{to{transform:rotate(360deg)}}.toast[data-v-77ec6402]{position:fixed;top:76px;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:10px 24px;border-radius:8px;font-size:14px;box-shadow:0 6px 20px #0000002e;z-index:999}.toast.success[data-v-77ec6402]{background:#2bb673}.toast.error[data-v-77ec6402]{background:#e74c3c}.fade-enter-active[data-v-77ec6402],.fade-leave-active[data-v-77ec6402]{transition:all .25s ease}.fade-enter-from[data-v-77ec6402],.fade-leave-to[data-v-77ec6402]{opacity:0;transform:translate(-50%,-10px)}.login-page[data-v-b34acaae]{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;background:linear-gradient(135deg,#667eea,#764ba2);position:relative}.back-home[data-v-b34acaae]{position:absolute;top:24px;left:28px;color:#fff;font-size:14px;padding:8px 16px;background:#ffffff2e;border-radius:6px;transition:background .2s}.back-home[data-v-b34acaae]:hover{background:#ffffff52}.login-card[data-v-b34acaae]{background:#fff;width:100%;max-width:420px;border-radius:18px;padding:44px 40px 36px;box-shadow:0 20px 48px #0000002e}.login-header[data-v-b34acaae]{text-align:center;margin-bottom:28px}.logo[data-v-b34acaae]{font-size:44px;margin-bottom:8px}.title[data-v-b34acaae]{font-size:24px;font-weight:700;color:#333;margin:0 0 6px}.subtitle[data-v-b34acaae]{font-size:14px;color:#999;margin:0;line-height:1.6}.status-block[data-v-b34acaae]{display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 0;color:#888;font-size:14px}.status-block.error[data-v-b34acaae]{color:#e74c3c}.btn-text[data-v-b34acaae]{background:none;border:none;color:#667eea;font-size:14px;cursor:pointer;padding:4px 12px}.btn-text[data-v-b34acaae]:hover{text-decoration:underline}.login-form[data-v-b34acaae]{display:flex;flex-direction:column;gap:16px}.field[data-v-b34acaae]{display:flex;flex-direction:column;gap:6px}.field-label[data-v-b34acaae]{font-size:13px;color:#666;font-weight:500}.field-input[data-v-b34acaae]{height:42px;border:1px solid #ddd;border-radius:8px;padding:0 14px;font-size:15px;outline:none;transition:border-color .2s,box-shadow .2s;background:#fafafa}.field-input[data-v-b34acaae]:focus{border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea2e}.field-input[data-v-b34acaae]:disabled,.field-input--disabled[data-v-b34acaae]{background:#ececec;color:#888;cursor:not-allowed;pointer-events:none}.dropdown[data-v-b34acaae]{position:relative}.dropdown-toggle[data-v-b34acaae]{width:100%;height:42px;border:1px solid #ddd;border-radius:8px;padding:0 14px;font-size:15px;background:#fafafa;cursor:pointer;display:flex;align-items:center;justify-content:space-between;outline:none;transition:border-color .2s,box-shadow .2s;color:#333}.dropdown-toggle[data-v-b34acaae]:hover{border-color:#c0c8e3}.dropdown.open .dropdown-toggle[data-v-b34acaae]{border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea2e}.dropdown-toggle[data-v-b34acaae]:disabled{cursor:not-allowed;opacity:.55}.dropdown-text[data-v-b34acaae]{text-align:left;flex:1}.dropdown-arrow[data-v-b34acaae]{font-size:12px;color:#999;transition:transform .2s}.dropdown.open .dropdown-arrow[data-v-b34acaae]{transform:rotate(180deg);color:#667eea}.dropdown-menu[data-v-b34acaae]{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid #e5e5e5;border-radius:8px;list-style:none;margin:0;padding:4px;box-shadow:0 8px 24px #0000001f;z-index:10;max-height:220px;overflow-y:auto}.dropdown-item[data-v-b34acaae]{padding:9px 12px;border-radius:6px;font-size:14px;color:#444;cursor:pointer;transition:background .15s,color .15s}.dropdown-item[data-v-b34acaae]:hover{background:#f4f5fb;color:#667eea}.dropdown-item.active[data-v-b34acaae]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:500}.dd-enter-active[data-v-b34acaae],.dd-leave-active[data-v-b34acaae]{transition:opacity .15s ease,transform .15s ease}.dd-enter-from[data-v-b34acaae],.dd-leave-to[data-v-b34acaae]{opacity:0;transform:translateY(-4px)}.error-tip[data-v-b34acaae]{font-size:13px;color:#e74c3c;background:#fdecea;border:1px solid #f5c6c0;border-radius:6px;padding:8px 12px;margin:0}.submit-btn[data-v-b34acaae]{margin-top:8px;height:44px;border:none;border-radius:10px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:15px;font-weight:600;letter-spacing:1px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s,transform .1s}.submit-btn[data-v-b34acaae]:hover:not(:disabled){opacity:.92}.submit-btn[data-v-b34acaae]:active:not(:disabled){transform:translateY(1px)}.submit-btn[data-v-b34acaae]:disabled{opacity:.55;cursor:not-allowed}.spinner-mini[data-v-b34acaae]{width:16px;height:16px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin-b34acaae .7s linear infinite}.spinner-mini.dark[data-v-b34acaae]{border:2px solid #d8d8d8;border-top-color:#667eea}@keyframes spin-b34acaae{to{transform:rotate(360deg)}}.footer-tip[data-v-b34acaae]{margin-top:24px;font-size:12px;color:#ffffffbf}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans SC,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;color:#333;background:#f0f2f5}a{color:inherit;text-decoration:none}
