.app-confirm-backdrop[data-v-1aca5a4b]{z-index:5000;background:#0a1810a8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.app-confirm-panel[data-v-1aca5a4b]{color:#17221b;background:#fff;border:1px solid #d8dfda;border-radius:12px;outline:none;width:min(100%,460px);padding:28px;box-shadow:0 20px 64px #0a1e1247}.app-confirm-mark[data-v-1aca5a4b]{color:#1f6948;border:1px solid #9daf9f;border-radius:50%;place-items:center;width:42px;height:42px;margin-bottom:18px;font-size:20px;font-weight:800;display:grid}.app-confirm-mark.danger[data-v-1aca5a4b]{color:#9d3029;border-color:#c78984}.app-confirm-copy h2[data-v-1aca5a4b]{margin:0;font-size:21px;line-height:1.35}.app-confirm-copy p[data-v-1aca5a4b]{color:#56645c;margin:12px 0 0;line-height:1.7}.app-confirm-actions[data-v-1aca5a4b]{justify-content:flex-end;gap:12px;margin-top:28px;display:flex}.app-confirm-actions button[data-v-1aca5a4b]{cursor:pointer;border-radius:7px;min-width:104px;min-height:48px;padding:10px 18px;font-size:15px;font-weight:700}.app-confirm-cancel[data-v-1aca5a4b]{color:#34443a;background:#fff;border:1px solid #acb8b0}.app-confirm-submit[data-v-1aca5a4b]{color:#fff;background:#1f6948;border:1px solid #1f6948}.app-confirm-submit.danger[data-v-1aca5a4b]{background:#a43a32;border-color:#a43a32}.app-confirm-actions button[data-v-1aca5a4b]:focus-visible{outline-offset:2px;outline:3px solid #1f69483d}.app-confirm-enter-active[data-v-1aca5a4b],.app-confirm-leave-active[data-v-1aca5a4b]{transition:opacity .16s}.app-confirm-enter-active .app-confirm-panel[data-v-1aca5a4b],.app-confirm-leave-active .app-confirm-panel[data-v-1aca5a4b]{transition:transform .16s}.app-confirm-enter-from[data-v-1aca5a4b],.app-confirm-leave-to[data-v-1aca5a4b]{opacity:0}.app-confirm-enter-from .app-confirm-panel[data-v-1aca5a4b],.app-confirm-leave-to .app-confirm-panel[data-v-1aca5a4b]{transform:translateY(10px)}@media (width<=520px){.app-confirm-backdrop[data-v-1aca5a4b]{padding:16px}.app-confirm-panel[data-v-1aca5a4b]{padding:22px}.app-confirm-actions[data-v-1aca5a4b]{flex-direction:column-reverse}.app-confirm-actions button[data-v-1aca5a4b]{width:100%}}#app{flex-direction:column;min-height:100vh;display:flex}:root{--color-forest-darkest:#001f16;--color-forest-dark:#063d2a;--color-forest-mid:#0b5138;--color-forest-light:#2a7d5b;--color-forest-pale:#c9dfd1;--color-forest-mist:#e5efe9;--color-cinnabar:#972b22;--color-cinnabar-pale:#f8e3e0;--color-ginkgo:#f1c232;--color-ginkgo-deep:#c79400;--color-earth-dark:#5f4037;--color-earth-mid:#82645a;--color-earth-light:#a88f85;--color-earth-pale:#ddd2cc;--color-cream:#f8f6ee;--color-cream-dark:#f1ede2;--color-white:#fff;--color-gray-50:#fbfaf5;--color-gray-100:#f1efe7;--color-gray-200:#d7ddd9;--color-gray-300:#aab5ae;--color-gray-400:#85958c;--color-gray-500:#607067;--color-gray-600:#56665d;--color-gray-700:#274638;--color-gray-800:#132d22;--color-gray-900:#071b14;--color-danger:#972b22;--color-danger-light:#d9a39e;--color-danger-bg:#f8e3e0;--color-success:#187c55;--color-success-light:#a8d5bd;--color-success-bg:#e6f1ea;--color-warning:#a87700;--color-warning-light:#e6cf7e;--color-warning-bg:#f7f0d8;--color-info:#315c4c;--color-info-light:#bad0c6;--color-info-bg:#e8f0ec;--sidebar-width:224px;--sidebar-collapsed-width:64px;--header-height:78px;--sidebar-bg:#001f16;--sidebar-text:#b8c9c0;--sidebar-text-active:#fff;--sidebar-hover:#c9dfd114;--sidebar-active-bg:#123e2d;--sidebar-border:#1f4b39;--content-bg:#f8f6ee;--header-bg:#fff;--header-border:#aab5ae;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display:"Noto Serif SC", "Songti SC", STSong, SimSun, serif;--font-mono:"JetBrains Mono", "Fira Code", Consolas, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--fw-light:300;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:0;--radius-md:2px;--radius-lg:2px;--radius-xl:4px;--radius-2xl:6px;--radius-full:9999px;--shadow-xs:none;--shadow-sm:0 1px 0 #001f1614;--shadow-md:0 6px 18px #001f161a;--shadow-lg:0 12px 28px #001f1624;--shadow-xl:0 18px 42px #001f162e;--shadow-card:none;--shadow-card-hover:none;--transition-fast:.15s ease;--transition-base:.3s ease;--transition-slow:.5s ease;--glass-bg:#ffffff1f;--glass-border:#fff3;--glass-blur:backdrop-filter: blur(12px);--z-base:1;--z-dropdown:100;--z-sticky:200;--z-overlay:300;--z-modal:400;--z-toast:500;--z-tooltip:600}body.app-confirm-open{overflow:hidden}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--fw-normal);color:var(--color-gray-800);background-color:var(--content-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}:focus-visible{outline:3px solid var(--color-ginkgo);outline-offset:2px}a{color:var(--color-forest-light);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-forest-mid)}img{max-width:100%;height:auto;display:block}button{cursor:pointer;font-family:var(--font-sans)}input,textarea,select{font-family:var(--font-sans)}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:var(--fw-semibold);color:var(--color-gray-900);line-height:1.3}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-gray-100);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-forest-light)}.btn{align-items:center;gap:var(--space-2);min-height:44px;padding:10px var(--space-5);font-size:var(--text-sm);font-weight:var(--fw-medium);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;line-height:1.4;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn-sm{min-height:38px;padding:7px var(--space-3);font-size:var(--text-xs)}.btn-lg{min-height:50px;padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.btn-primary{background:var(--color-forest-dark);color:var(--color-white);border-color:var(--color-forest-dark);box-shadow:none}.btn-primary:hover{background:var(--color-forest-mid);box-shadow:none}.btn-primary:active{background:var(--color-forest-darkest);box-shadow:none}.btn-secondary{background:var(--color-white);color:var(--color-forest-mid);border-color:var(--color-forest-light)}.btn-secondary:hover{background:var(--color-forest-mist);border-color:var(--color-forest-mid)}.btn-danger{background:var(--color-danger);color:var(--color-white);border-color:var(--color-danger);box-shadow:none}.btn-danger:hover{box-shadow:none;background:#7d231c}.btn-ghost{color:var(--color-gray-600);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--color-gray-100);color:var(--color-gray-800)}.btn-warning{background:var(--color-warning);color:var(--color-white);border-color:var(--color-warning)}.btn-warning:hover{background:#835d00}.card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--color-gray-300);transition:border-color var(--transition-fast)}.card:hover{border-color:var(--color-gray-400)}.card-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-gray-100);justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.card-header h2,.card-header h3{font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-gray-900)}.card-body{padding:var(--space-6)}.badge{padding:2px var(--space-2);font-size:var(--text-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-full);letter-spacing:.02em;align-items:center;display:inline-flex}.badge-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success-light)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-light)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger-light)}.badge-info{background:var(--color-info-bg);color:var(--color-info);border:1px solid var(--color-info-light)}.badge-neutral{background:var(--color-gray-100);color:var(--color-gray-600);border:1px solid var(--color-gray-200)}.form-group{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.form-label{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-gray-700)}.form-label.required:after{content:" *";color:var(--color-danger)}.form-control{width:100%;min-height:44px;padding:10px var(--space-3);font-size:var(--text-sm);font-family:var(--font-sans);color:var(--color-gray-800);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;line-height:1.5}.form-control::placeholder{color:var(--color-gray-400)}.form-control:focus{border-color:var(--color-forest-dark);box-shadow:0 0 0 2px #063d2a1f}.form-control:disabled{background:var(--color-gray-50);color:var(--color-gray-500);cursor:not-allowed}.form-control.is-error{border-color:var(--color-danger);box-shadow:0 0 0 3px #e53e3e1f}.form-error{font-size:var(--text-xs);color:var(--color-danger);margin-top:var(--space-1)}.form-hint{font-size:var(--text-xs);color:var(--color-gray-500);margin-top:var(--space-1)}textarea.form-control{resize:vertical;min-height:80px}select.form-control{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8)}.table-wrapper{border-radius:var(--radius-lg);width:100%;box-shadow:none;border:1px solid var(--color-gray-300);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);background:var(--color-white)}.data-table thead{background:var(--color-cream-dark);border-bottom:1px solid var(--color-gray-300)}.data-table thead th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--fw-semibold);color:var(--color-gray-600);font-size:var(--text-xs);letter-spacing:.02em;white-space:nowrap}.data-table tbody tr{border-bottom:1px solid var(--color-gray-100);transition:background-color var(--transition-fast)}.data-table tbody tr:last-child{border-bottom:none}.data-table tbody tr:hover{background-color:var(--color-forest-mist);cursor:pointer}.data-table tbody td{padding:var(--space-3) var(--space-4);color:var(--color-gray-700);vertical-align:middle}.spinner{border:2px solid #52b78833;border-top-color:var(--color-forest-light);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}.spinner-lg{border-width:3px;width:40px;height:40px}.spinner-sm{border-width:1.5px;width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{border-radius:inherit;z-index:var(--z-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffbf;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.5}}.pulse-warning{animation:1.5s ease-in-out infinite pulse-warning}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.fade-in-up{animation:.4s both fadeInUp}@keyframes slideInRight{0%{opacity:0;transform:translate(32px)}to{opacity:1;transform:translate(0)}}.toast-container{top:var(--space-6);right:var(--space-6);z-index:var(--z-toast);gap:var(--space-3);pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{pointer-events:all;min-width:280px;max-width:400px;padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);align-items:flex-start;gap:var(--space-3);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-left:4px solid #0000;animation:.35s cubic-bezier(.34,1.56,.64,1) both slideInRight;display:flex}.toast.toast-success{border-left-color:var(--color-success);background:#fffffff7}.toast.toast-error{border-left-color:var(--color-danger);background:#fffffff7}.toast.toast-warning{border-left-color:var(--color-warning);background:#fffffff7}.toast.toast-info{border-left-color:var(--color-info);background:#fffffff7}.toast-icon{font-size:var(--text-xl);flex-shrink:0;margin-top:-2px}.toast-content{flex:1}.toast-title{font-weight:var(--fw-semibold);font-size:var(--text-sm);color:var(--color-gray-900);margin-bottom:2px}.toast-message{font-size:var(--text-xs);color:var(--color-gray-600);line-height:1.4}.toast-close{font-size:var(--text-lg);color:var(--color-gray-400);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:none;flex-shrink:0;padding:0;line-height:1}.toast-close:hover{color:var(--color-gray-700)}.toast-enter-from{opacity:0;transform:translate(40px)}.toast-enter-active{transition:all .35s cubic-bezier(.34,1.56,.64,1)}.toast-leave-to{opacity:0;max-height:0;margin:0;padding:0;transform:translate(40px)}.toast-leave-active{transition:all .3s;overflow:hidden}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal);padding:var(--space-4);background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-white);border:1px solid var(--color-gray-300);box-shadow:var(--shadow-xl);border-radius:0;width:100%;max-width:560px;max-height:90vh;animation:.3s both fadeInUp;overflow-y:auto}.modal-lg{max-width:800px}.modal-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-gray-100);justify-content:space-between;align-items:center;display:flex}.modal-header h3{font-size:var(--text-xl);font-weight:var(--fw-semibold);color:var(--color-gray-900)}.modal-close{background:var(--color-gray-100);border-radius:var(--radius-full);width:32px;height:32px;font-size:var(--text-lg);cursor:pointer;color:var(--color-gray-500);transition:all var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-close:hover{background:var(--color-gray-200);color:var(--color-gray-800)}.modal-body{padding:var(--space-6)}.modal-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-gray-100);justify-content:flex-end;align-items:center;gap:var(--space-3);display:flex}.grid{gap:var(--space-4);display:grid}.grid-1{grid-template-columns:1fr}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (width<=1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}.toast-container{right:var(--space-4);left:var(--space-4);top:var(--space-4)}}.pagination{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-4) 0;flex-wrap:wrap;display:flex}.pagination-btn{min-width:36px;height:36px;padding:0 var(--space-2);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-white);color:var(--color-gray-700);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}.pagination-btn:hover:not(:disabled){border-color:var(--color-forest-light);color:var(--color-forest-mid);background:var(--color-forest-mist)}.pagination-btn.active{background:var(--color-forest-mid);border-color:var(--color-forest-mid);color:var(--color-white);font-weight:var(--fw-semibold)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.tabs{border-bottom:2px solid var(--color-gray-200);margin-bottom:var(--space-6);gap:0;display:flex}.tab-btn{padding:var(--space-3) var(--space-5);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-gray-500);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px}.tab-btn:hover{color:var(--color-forest-mid)}.tab-btn.active{color:var(--color-forest-mid);border-bottom-color:var(--color-forest-mid);font-weight:var(--fw-semibold)}.page-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-title{font-family:var(--font-display);font-size:clamp(1.9rem,2.4vw,2.6rem);font-weight:var(--fw-medium);letter-spacing:.01em;color:var(--color-gray-900)}.page-subtitle{font-size:var(--text-base);color:var(--color-gray-500);margin-top:var(--space-1)}.search-bar{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.search-input-wrapper{flex:1;min-width:200px;position:relative}.search-input-wrapper .search-icon{left:var(--space-3);color:var(--color-gray-400);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search-input-wrapper .form-control{padding-left:calc(var(--space-3) * 2 + 16px)}.empty-state{text-align:center;padding:var(--space-16) var(--space-8);color:var(--color-gray-500)}.empty-state-icon{margin-bottom:var(--space-4);font-size:3rem;display:block}.empty-state h3{font-size:var(--text-lg);font-weight:var(--fw-medium);color:var(--color-gray-700);margin-bottom:var(--space-2)}.empty-state p{font-size:var(--text-sm);margin-bottom:var(--space-6)}.confirm-dialog{text-align:center;padding:var(--space-2) 0}.confirm-dialog .confirm-icon{margin-bottom:var(--space-4);font-size:3rem}.confirm-dialog h3{font-size:var(--text-xl);font-weight:var(--fw-semibold);margin-bottom:var(--space-2)}.confirm-dialog p{color:var(--color-gray-500);font-size:var(--text-sm)}.v-enter-active,.v-leave-active{transition:opacity var(--transition-base)}.v-enter-from,.v-leave-to{opacity:0}.modal-enter-active,.modal-leave-active{transition:all .3s}.modal-enter-from,.modal-leave-to{opacity:0;transform:scale(.95)}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.text-muted{color:var(--color-gray-500)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.fw-bold{font-weight:var(--fw-bold)}.fw-medium{font-weight:var(--fw-medium)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.w-full{width:100%}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.divider{background:var(--color-gray-200);height:1px;margin:var(--space-4) 0}.section-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--fw-semibold);color:var(--color-gray-800);margin-bottom:var(--space-4);align-items:center;gap:var(--space-2);display:flex}.section-title:after{content:"";background:var(--color-gray-200);flex:1;height:1px}
