:root{--color-primary:#2d6a4f;--color-primary-light:#40916c;--color-accent:#52b788;--color-accent-light:#74c69d;--color-bg:#fff;--color-bg-secondary:#f4f7f6;--color-bg-card:#fff;--color-text:#1a1a2e;--color-text-secondary:#6c757d;--color-text-muted:#adb5bd;--color-border:#e2e8e4;--color-border-light:#eef2f0;--color-danger:#d32f2f;--color-danger-light:#ffebee;--color-warning:#f57c00;--color-warning-light:#fff3e0;--color-success:#2d6a4f;--color-success-light:#e8f5e9;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 2px #2d6a4f0a, 0 1px 4px #0000000a;--shadow-md:0 2px 6px #2d6a4f0f, 0 4px 12px #0000000f;--shadow-lg:0 4px 12px #2d6a4f14, 0 8px 24px #00000014;--shadow-hover:0 8px 20px #2d6a4f1f, 0 16px 40px #0000001a;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--max-width:768px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;margin:0;padding:0}input,textarea,[contenteditable]{-webkit-user-select:auto;user-select:auto}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);color:var(--color-text);background-color:var(--color-bg-secondary);min-height:100vh;line-height:1.6}a{color:var(--color-accent);text-decoration:none}button{cursor:pointer;font-family:var(--font-family);background:0 0;border:none;outline:none}input,textarea,select{font-family:var(--font-family);outline:none}.app-container{max-width:var(--max-width);min-height:100vh;margin:0 auto;padding-bottom:80px}.page-container{padding:16px}.card{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light);transition:transform var(--transition-base), box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-lg)}.card-press:active{transform:scale(.985)}.btn{border-radius:var(--radius-sm);transition:all var(--transition-base);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:10px 22px;font-size:14px;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";transition:background var(--transition-fast);background:#fff0;position:absolute;inset:0}.btn:active:after{background:#ffffff26}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 2px 8px #2d6a4f40}.btn-primary:hover{background:var(--color-primary-light);transform:translateY(-1px);box-shadow:0 4px 12px #2d6a4f59}.btn-primary:disabled{background:var(--color-text-muted);cursor:not-allowed;box-shadow:none;transform:none}.btn-accent{background:var(--color-accent);color:#fff;box-shadow:0 2px 8px #52b78840}.btn-accent:hover{background:var(--color-accent-light);transform:translateY(-1px);box-shadow:0 4px 12px #52b78859}.btn-outline{color:var(--color-primary);border:1.5px solid var(--color-primary);background:0 0}.btn-outline:hover{background:var(--color-primary);color:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #2d6a4f33}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 2px 8px #d32f2f33}.btn-danger:hover{background:#c62828;transform:translateY(-1px);box-shadow:0 4px 12px #d32f2f4d}.btn-sm{padding:5px 14px;font-size:12px}.btn-block{width:100%}.input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);transition:border-color var(--transition-base), box-shadow var(--transition-base);padding:12px 16px;font-size:14px}.input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #52b7881f}.input::placeholder{color:var(--color-text-muted)}.textarea{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);resize:vertical;min-height:100px;transition:border-color var(--transition-base), box-shadow var(--transition-base);padding:12px 16px;font-size:14px}.textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #52b7881f}.label{color:var(--color-text);margin-bottom:8px;font-size:14px;font-weight:600;display:block}.label-required:after{content:"*";color:var(--color-danger);margin-left:3px}.error-text{color:var(--color-danger);margin-top:4px;font-size:12px}.badge{letter-spacing:.3px;border-radius:20px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.badge-active{background:var(--color-success-light);color:var(--color-success);border:1px solid #2d6a4f26}.badge-paused{background:var(--color-warning-light);color:var(--color-warning);border:1px solid #f57c0026}.badge-terminated{background:var(--color-danger-light);color:var(--color-danger);border:1px solid #d32f2f26}.divider{background:linear-gradient(90deg, transparent, var(--color-border-light), transparent);height:1px;margin:14px 0}.empty-state{color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;padding:56px 24px;animation:.5s fadeIn;display:flex}.empty-state svg{opacity:.35;width:56px;height:56px;margin-bottom:16px}.empty-state p{font-size:14px;font-weight:500}.toast{border-radius:var(--radius-md);z-index:9999;box-shadow:var(--shadow-hover);padding:12px 28px;font-size:14px;font-weight:500;animation:.35s cubic-bezier(.34,1.56,.64,1) toastIn;position:fixed;top:20px;left:50%;transform:translate(-50%)}.toast-success{background:var(--color-primary);color:#fff}.toast-error{background:var(--color-danger);color:#fff}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(-16px)scale(.95)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.skeleton{background:linear-gradient(90deg, var(--color-bg-secondary) 25%, var(--color-border-light) 50%, var(--color-bg-secondary) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}@media (width<=480px){:root{font-size:14px}.page-container{padding:12px}}
