*,:after,:before{box-sizing:border-box}body,html{padding:0;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#0f172a;color:#e5e7eb}body{min-height:100vh}a{color:inherit;text-decoration:none}button{font-family:inherit}.app-root{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1 1;max-width:1120px;width:100%;margin:0 auto;padding:2rem 1.5rem 3rem}.card{background:radial-gradient(circle at top left,#1d283a,#020617);border-radius:1rem;padding:1.75rem 2rem;box-shadow:0 20px 45px rgba(15,23,42,.9);border:1px solid rgba(148,163,184,.25)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.card-title{font-size:1.25rem;font-weight:600}.card-subtitle{font-size:.875rem;color:#9ca3af}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:999px;border:none;cursor:pointer;font-size:.9rem;font-weight:500;transition:transform .08s ease,box-shadow .08s ease,background .15s ease,color .15s ease}.btn-primary{background:linear-gradient(135deg,#22c55e,#16a34a);color:#022c22;box-shadow:0 10px 30px rgba(34,197,94,.35)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 14px 40px rgba(34,197,94,.4)}.btn-spinner{display:inline-block;width:.9rem;height:.9rem;border-radius:999px;border:2px solid rgba(148,163,184,.5);border-top-color:#22c55e;animation:btn-spin .7s linear infinite}@keyframes btn-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.btn-secondary{background:rgba(15,23,42,.9);color:#e5e7eb;border:1px solid rgba(148,163,184,.6)}.btn-secondary:hover{background:rgba(15,23,42,.95)}.btn-ghost{background:transparent;color:#9ca3af}.btn-ghost:hover{background:rgba(15,23,42,.85);color:#e5e7eb}.btn-danger{background:linear-gradient(135deg,#f97373,#ef4444);color:#111827;box-shadow:0 10px 30px hsla(0,91%,71%,.3)}.btn-danger:hover{box-shadow:0 14px 40px hsla(0,91%,71%,.4)}.btn:disabled{opacity:.6;cursor:default;transform:none;box-shadow:none}.input,.select{width:100%;padding:.55rem .75rem;border-radius:.75rem;border:1px solid rgba(148,163,184,.6);background-color:rgba(15,23,42,.95);color:#e5e7eb;font-size:.9rem}.input::placeholder{color:#6b7280}.input:focus{outline:2px solid rgba(34,197,94,.75);outline-offset:1px}.label{display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;margin-bottom:.25rem}.field{margin-bottom:1rem}.error-text{color:#fecaca;font-size:.8rem;margin-top:.25rem}.skeleton{position:relative;overflow:hidden;background:rgba(15,23,42,.9);border-radius:.5rem}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background-image:linear-gradient(120deg,transparent,rgba(148,163,184,.25),transparent);animation:skeleton-shimmer 1.2s ease-in-out infinite}.skeleton-paragraph{height:.9rem;margin-bottom:.5rem}.skeleton-table{height:8rem;margin-top:1rem}@keyframes skeleton-shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.muted{color:#9ca3af}.muted,.table{font-size:.85rem}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:.55rem .5rem;text-align:left}.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;border-bottom:1px solid rgba(148,163,184,.35)}.table tbody tr:nth-child(odd){background:rgba(15,23,42,.75)}.table tbody tr:nth-child(2n){background:rgba(15,23,42,.4)}.status-pill{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .6rem;border-radius:999px;font-size:.75rem}.status-dot{width:.45rem;height:.45rem;border-radius:999px}.status-pending{background:rgba(248,250,252,.05);color:#fbbf24}.status-pending .status-dot{background:#fbbf24}.status-in-progress{background:rgba(59,130,246,.1);color:#60a5fa}.status-in-progress .status-dot{background:#60a5fa}.status-signed{background:rgba(34,197,94,.12);color:#4ade80}.status-signed .status-dot{background:#22c55e}.status-aborted{background:rgba(239,68,68,.13);color:#fca5a5}.status-aborted .status-dot{background:#ef4444}.status-completed{background:rgba(34,197,94,.12);color:#bbf7d0}.status-completed .status-dot{background:#22c55e}.status-upload-pending{background:rgba(248,250,252,.05);color:#9ca3af}.status-upload-pending .status-dot{background:#9ca3af}.status-upload-preparing{background:rgba(59,130,246,.1);color:#ebd300}.status-upload-preparing .status-dot{background:#ebd300}.status-upload-ready{background:rgba(34,197,94,.12);color:#4ade80}.status-upload-ready .status-dot{background:#22c55e}.status-upload-error{background:rgba(239,68,68,.13);color:#fecaca}.status-upload-error .status-dot{background:#ef4444}.chip{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;background:rgba(15,23,42,.75);border:1px solid rgba(148,163,184,.6);color:#e5e7eb}.stack-v{flex-direction:column}.stack-h,.stack-v{display:flex;gap:.75rem}.stack-h{flex-direction:row}.stack-h.center{align-items:center}.stack-h.between{justify-content:space-between}.nav{width:100%;border-bottom:1px solid rgba(148,163,184,.3);background:radial-gradient(circle at top left,#020617,#020617)}.nav-inner{max-width:1120px;margin:0 auto;padding:.9rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.nav-brand{font-size:1rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.nav-links{display:flex;align-items:center;gap:.5rem}.pill{padding:.2rem .6rem;border-radius:999px;background:rgba(15,23,42,.8);border:1px solid rgba(148,163,184,.4);font-size:.75rem;color:#9ca3af}.page-title{font-size:1.4rem;font-weight:600;margin-bottom:1rem}.page-lead{font-size:.9rem;color:#9ca3af;margin-bottom:1.5rem}.divider{border:none;border-top:1px dashed rgba(148,163,184,.35);margin:1rem 0}.tag{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:999px;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;border:1px solid rgba(148,163,184,.6);color:#9ca3af}.badge-green{background:rgba(22,163,74,.15);border-color:rgba(34,197,94,.6);color:#bbf7d0}.badge-yellow{background:rgba(234,179,8,.15);border-color:rgba(234,179,8,.6);color:#fef3c7}.badge-red{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.6);color:#fee2e2}.badge-blue{background:rgba(59,130,246,.15);border-color:rgba(59,130,246,.6);color:#dbeafe}.small{font-size:.8rem}.link{color:#4ade80;cursor:pointer}.link:hover{text-decoration:underline}@media (max-width:768px){.card{padding:1.25rem}.app-main{padding:1.5rem 1rem 2.5rem}.nav-inner{padding-inline:1rem}}