:root{--bg: #eef1f5;--surface: #ffffff;--surface-2: #f7f9fc;--border: #dce2ea;--text: #1a2230;--text-soft: #5a6678;--text-faint: #8a94a6;--primary: #0e8f8c;--primary-dark: #0a6f6d;--primary-soft: #e2f4f3;--header: #16202e;--amber: #c77700;--amber-soft: #fff3df;--green: #1f8a4c;--green-soft: #e3f5ea;--blue: #2563c9;--blue-soft: #e6eefb;--red: #c0392b;--red-soft: #fdecea;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(20, 30, 45, .06), 0 4px 16px rgba(20, 30, 45, .06);--shadow-lg: 0 8px 30px rgba(20, 30, 45, .14);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}a{color:var(--primary-dark)}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;background:var(--header);color:#fff;display:flex;align-items:center;gap:12px;padding:12px 16px;box-shadow:0 1px #ffffff0f}.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:700}.topbar .brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--primary),#18b3a8);display:grid;place-items:center;color:#fff;font-weight:800;font-size:13px}.topbar .spacer{flex:1}.topbar .user{display:flex;align-items:center;gap:8px;font-size:13px;color:#cfd6e0}.topbar .role-chip{font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:#ffffff1f;padding:3px 8px;border-radius:999px}.linkbtn{background:none;border:none;color:#cfd6e0;cursor:pointer;font:inherit;font-size:13px}.linkbtn:hover{color:#fff}.nav{display:flex;gap:4px;background:var(--header);padding:0 8px 8px;overflow-x:auto}.nav a{color:#aeb8c6;text-decoration:none;font-size:14px;font-weight:600;padding:8px 14px;border-radius:8px;white-space:nowrap}.nav a.active{color:#fff;background:#ffffff1a}.container{width:100%;max-width:760px;margin:0 auto;padding:16px;flex:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}.card h2{font-size:16px}.card-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-dark);margin:20px 0 10px}.section-label:first-child{margin-top:0}.field{margin-bottom:14px}.field>label{display:block;font-size:13px;font-weight:600;color:var(--text-soft);margin-bottom:6px}.field .req{color:var(--red)}.input,.select,textarea{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:11px 12px;min-height:44px;transition:border-color .12s,box-shadow .12s}.input:focus,.select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}textarea{min-height:72px;resize:vertical}.field .hint{font-size:12px;color:var(--text-faint);margin-top:4px}.field .error{font-size:12.5px;color:var(--red);margin-top:5px;font-weight:600}.input.invalid,.select.invalid{border-color:var(--red)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}@media (max-width: 520px){.grid-2{grid-template-columns:1fr}}.btn{font:inherit;font-weight:650;cursor:pointer;border:1.5px solid transparent;border-radius:var(--radius-sm);padding:11px 18px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .12s,border-color .12s,opacity .12s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-block{width:100%}.btn-row{display:flex;gap:10px}.kv{display:grid;grid-template-columns:40% 60%;gap:6px 10px;font-size:14px;margin:0}.kv dt{color:var(--text-faint)}.kv dd{margin:0;font-weight:600;word-break:break-word}.badge{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;text-transform:capitalize;white-space:nowrap}.badge.pending{background:var(--surface-2);color:var(--text-faint);border:1px solid var(--border)}.badge.in_progress{background:var(--amber-soft);color:var(--amber)}.badge.completed{background:var(--green-soft);color:var(--green)}.badge.edited{background:var(--blue-soft);color:var(--blue)}.badge.failed{background:var(--red-soft);color:var(--red)}.list{display:flex;flex-direction:column;gap:0}.row-item{display:flex;align-items:center;gap:12px;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:13px 14px;margin-bottom:8px;text-align:left;font:inherit;cursor:pointer}.row-item:hover{border-color:var(--primary);background:var(--surface-2)}.row-item .main{flex:1;min-width:0}.row-item .main .title{font-weight:650}.row-item .main .sub{font-size:12.5px;color:var(--text-faint)}.row-item .chev{color:var(--text-faint)}.progress-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}.stat{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px}.stat .num{font-size:26px;font-weight:750}.stat .lbl{font-size:12.5px;color:var(--text-soft)}.bar{height:10px;background:var(--surface-2);border-radius:999px;overflow:hidden;display:flex}.bar .seg-completed{background:var(--green)}.bar .seg-edited{background:var(--blue)}.bar .seg-in_progress{background:var(--amber)}.muted{color:var(--text-faint)}.center{text-align:center}.stack{display:flex;flex-direction:column;gap:10px}.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;margin:24px auto}@keyframes spin{to{transform:rotate(360deg)}}.banner{padding:11px 14px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:14px}.banner.error{background:var(--red-soft);color:var(--red)}.banner.success{background:var(--green-soft);color:var(--green)}.banner.warn{background:var(--amber-soft);color:var(--amber)}.login-wrap{min-height:100%;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 500px at 50% -10%,#20303f 0%,var(--bg) 55%)}.login-card{width:100%;max-width:380px}.login-card .logo-lg{width:52px;height:52px;border-radius:14px;margin:0 auto 14px;background:linear-gradient(135deg,var(--primary),#18b3a8);display:grid;place-items:center;color:#fff;font-weight:800;font-size:20px}
