:root{--green:#2c893a;--green-dark:#226d2d;--green-light:#e8f5ea;--green-border:#a8d4af;--dark:#333;--darker:#1b1a1a;--white:#fff;--bg:#f5f7f8;--bg-alt:#fafafa;--border:#e6e7e9;--border-dark:#dfe0e3;--text:#333;--text-muted:#828b95;--text-secondary:#525c69;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 16px #0000001a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button{cursor:pointer;letter-spacing:.02em;border:none;border-radius:2px;font-family:inherit;font-size:12px;font-weight:600;transition:background .15s,opacity .15s,transform .1s}button:disabled{opacity:.45;cursor:not-allowed}button:active:not(:disabled){transform:scale(.98)}.btn-primary{background:var(--green);color:var(--darker);padding:11px 24px;font-size:12px}.btn-primary:hover:not(:disabled){background:var(--green-dark)}.btn-secondary{background:var(--white);color:var(--dark);border:1px solid var(--border-dark);padding:9px 18px;font-size:12px;font-weight:500}.btn-secondary:hover:not(:disabled){border-color:var(--dark);background:var(--bg)}.btn-danger{color:#c0392b;background:#fff0f0;border:1px solid #f5c6c6;padding:7px 14px;font-size:12px;font-weight:500}.btn-danger:hover:not(:disabled){background:#ffe0e0}.btn-dark{background:var(--darker);color:var(--white);padding:9px 18px;font-size:12px}.btn-dark:hover:not(:disabled){background:#2e2d2d}.btn-sm{padding:7px 14px!important;font-size:12px!important}input,textarea,select{border:1px solid var(--border-dark);background:var(--white);color:var(--text);border-radius:2px;outline:none;padding:9px 12px;font-family:inherit;font-size:14px;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--green)}textarea{resize:vertical}.label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:6px;font-size:11px;font-weight:600;display:block}.field{margin-bottom:18px}.error-msg{color:#c0392b;margin-top:5px;font-size:12px}.card{background:var(--white);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:2px;padding:24px}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:2px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-block}.badge-done{color:#1a5a22;background:#e8f5ea}.badge-pending{color:#8a6800;background:#fff8e0}.badge-generating{color:#1a3a8a;background:#e8f0ff}.badge-error{color:#c0392b;background:#fff0f0}.spinner{border:2px solid var(--border);border-top-color:#2c893a;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.topbar{background:var(--darker);z-index:100;justify-content:space-between;align-items:center;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.topbar .logo{color:var(--white);letter-spacing:-.5px;font-size:20px;font-weight:800}.topbar .logo span{color:var(--green);font-weight:400}.topbar nav{align-items:center;gap:4px;display:flex}.topbar nav a{color:#ffffff8c;border-radius:2px;padding:6px 14px;font-size:13px;font-weight:500;transition:color .15s,background .15s}.topbar nav a:hover{color:var(--white);background:#ffffff14}.topbar nav a.active{color:var(--green)}.topbar nav .btn-logout{color:#ffffffa6;background:#ffffff14;border-radius:2px;margin-left:8px;padding:7px 16px;font-size:12px;font-weight:500}.topbar nav .btn-logout:hover{color:var(--white);background:#ffffff26}.page{max-width:960px;margin:0 auto;padding:36px 24px 60px}.page-wide{max-width:1200px;margin:0 auto;padding:36px 24px 60px}.tag{background:var(--green-light);color:var(--darker);border:1px solid var(--green-border);border-radius:2px;align-items:center;gap:5px;padding:3px 10px;font-size:13px;font-weight:500;display:inline-flex}.tag button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 2px;font-size:15px;font-weight:400;line-height:1}.tag button:hover{color:var(--darker)}.step-badge{border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:700;display:flex}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:10px;font-size:11px;font-weight:700}.data-table{border-collapse:collapse;width:100%}.data-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);text-align:left;border-bottom:2px solid var(--border);padding:8px 14px;font-size:11px;font-weight:700}.data-table td{border-bottom:1px solid var(--bg);vertical-align:middle;padding:12px 14px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg)}.accent-bar{background:var(--green);width:40px;height:3px;margin-bottom:16px}.card-hover{transition:box-shadow .2s,transform .2s}.card-hover:hover{transform:translateY(-1px);box-shadow:0 6px 24px #0000001a}.progress-bar-wrap{background:var(--border);border-radius:2px;width:100%;height:4px;overflow:hidden}.progress-bar-fill{background:var(--green);border-radius:2px;height:100%;transition:width .5s}.pulse-dot{background:#2c893a;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.4s ease-in-out infinite pulse;display:inline-block}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.toast-wrap{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:28px;right:28px}.toast{color:#fff;background:#1b1a1a;border-left:3px solid #2c893a;border-radius:2px;padding:10px 18px;font-size:13px;font-weight:500;animation:.25s toast-in;box-shadow:0 4px 16px #0000002e}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.copy-btn{background:var(--bg);color:var(--text-muted);border:1px solid var(--border-dark);cursor:pointer;white-space:nowrap;border-radius:2px;padding:5px 12px;font-size:12px;transition:all .15s}.copy-btn:hover,.copy-btn.copied{background:var(--green);color:#fff;border-color:var(--green)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s both fadeIn}.char-counter{color:var(--text-muted);text-align:right;margin-top:4px;font-size:11px}
