:root{--bg: #f4f6fb;--card: #ffffff;--ink: #12203a;--muted: #5b6b86;--line: #e4eaf3;--blue: #2563eb;--blue-soft: #eaf1ff;--amber: #f59e0b;--ok: #059669;--bad: #dc2626;--shadow: 0 18px 50px rgba(18, 32, 58, .08)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background:radial-gradient(900px 420px at -10% -20%,#dbe7ff 0%,transparent 55%),radial-gradient(700px 360px at 110% -10%,#fff4d6 0%,transparent 50%),var(--bg);font-family:Manrope,ui-sans-serif,system-ui,sans-serif}button,input,textarea{font:inherit}a{color:inherit}.mono{font-family:DM Mono,ui-monospace,monospace}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(440px,100%);background:var(--card);border:1px solid var(--line);border-radius:28px;padding:36px;box-shadow:var(--shadow)}.brand-kicker{display:inline-flex;gap:8px;align-items:center;color:var(--blue);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:12px}.auth-card h1{margin:10px 0 8px;font-size:32px}.auth-card p{color:var(--muted);margin:0 0 24px}label{display:block;font-size:13px;font-weight:700;margin:0 0 8px}input,textarea{width:100%;border:1px solid var(--line);background:#fbfcfe;border-radius:14px;padding:12px 14px;outline:none}input:focus,textarea:focus{border-color:#93c5fd;box-shadow:0 0 0 4px #2563eb1f}.field{margin-bottom:16px}.btn{border:0;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer;background:var(--blue);color:#fff}.btn.full{width:100%}.btn.ghost{background:var(--blue-soft);color:var(--blue)}.btn.amber{background:var(--amber);color:#111}.btn.danger{background:#fee2e2;color:var(--bad)}.btn:disabled{opacity:.55;cursor:wait}.err{color:var(--bad);font-size:13px;margin-top:10px}.ok-msg{color:var(--ok);font-size:13px;margin-top:10px}.toast{position:fixed;right:24px;bottom:24px;z-index:80;display:flex;gap:12px;align-items:flex-start;min-width:260px;max-width:360px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:14px 16px;animation:toastIn .35s ease}.toast b{display:block}.toast p{margin:4px 0 0;color:var(--muted);font-size:13px}.toast-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;background:var(--ok)}.toast.err .toast-dot{background:var(--bad)}.toast.warn .toast-dot{background:var(--amber)}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#0f172a6b;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:grid;place-items:center;padding:20px;animation:fadeIn .25s ease}.modal-card{width:min(460px,100%);background:#fff;border-radius:28px;padding:28px;box-shadow:var(--shadow);animation:popIn .35s cubic-bezier(.2,.8,.2,1);text-align:center}.modal-card.small{width:min(380px,100%);text-align:left}.modal-card h3{margin:8px 0 6px;font-size:24px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:none}}.orbit{position:relative;width:72px;height:72px;margin:0 auto 12px}.orbit span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:3px solid transparent;border-top-color:var(--blue);animation:spin 1s linear infinite}.orbit span:nth-child(2){top:8px;right:8px;bottom:8px;left:8px;border-top-color:var(--amber);animation-duration:1.4s;animation-direction:reverse}.orbit span:nth-child(3){top:16px;right:16px;bottom:16px;left:16px;border-top-color:#93c5fd;animation-duration:.8s}@keyframes spin{to{transform:rotate(360deg)}}.process-list{text-align:left;margin-top:8px}.process-item{display:flex;gap:10px;align-items:center;padding:8px 0;color:var(--muted);font-weight:700;font-size:13px}.process-item i{width:10px;height:10px;border-radius:50%;background:#dbe3ef}.process-item.on{color:var(--blue)}.process-item.on i{background:var(--blue);box-shadow:0 0 0 6px #2563eb26;animation:pulse 1.2s infinite}.process-item.done{color:var(--ok)}.process-item.done i{background:var(--ok)}.process-item.ready{color:var(--ok)}.process-item.ready i{background:var(--ok);box-shadow:0 0 0 6px #05966929}@keyframes pulse{50%{box-shadow:0 0 0 10px #2563eb00}}.drop{position:relative;cursor:pointer;transition:transform .2s ease,border-color .2s ease}.drop:hover{transform:translateY(-2px);border-color:#93c5fd}.drop.busy:after{content:"Mengunggah…";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffc7;font-weight:800;color:var(--blue)}.kit-card{transition:transform .2s ease,box-shadow .2s ease}.kit-card:hover{transform:translateY(-4px);box-shadow:0 22px 40px #12203a1f}.progress.fat{height:12px}.btn .spin{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;display:inline-block;margin-right:8px;vertical-align:-2px;animation:spin .7s linear infinite}.auth-card{animation:popIn .4s ease}.landing-nav,.hero,.landing-grid article{animation:toastIn .5s ease}.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{padding:28px 20px;border-right:1px solid var(--line);background:#ffffffb3;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.nav a{display:block;text-decoration:none;padding:11px 12px;border-radius:12px;color:var(--muted);font-weight:700;margin-bottom:6px}.nav a.active,.nav a:hover{background:var(--blue-soft);color:var(--blue)}.main{padding:32px 36px 80px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}h2{margin:0;font-size:30px}.muted{color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat,.kit-card,.panel{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.stat{padding:20px}.stat b{display:block;font-size:28px;margin-top:6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.kit-card{overflow:hidden}.kit-card img,.preview img,.drop img{width:100%;display:block}.kit-card .body,.panel{padding:16px 18px 18px}.badge{display:inline-flex;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.badge.draft{background:#eef2ff;color:#4338ca}.badge.compiling{background:#fff7ed;color:#c2410c}.badge.ready{background:#ecfdf5;color:#047857}.badge.published{background:#dbeafe;color:#1d4ed8}.badge.poor{background:#fee2e2;color:#b91c1c}.badge.adequate{background:#fef3c7;color:#b45309}.badge.recommended{background:#dcfce7;color:#166534}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.split{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.drop{border:1.5px dashed #c7d4ea;border-radius:20px;min-height:180px;display:grid;place-items:center;background:#f8fbff;overflow:hidden;text-align:center;color:var(--muted)}.progress{height:10px;background:#eef2f7;border-radius:99px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--blue);width:0;transition:width .4s ease}.skeleton{background:linear-gradient(90deg,#eef2f7,#f7f9fc,#eef2f7);background-size:200% 100%;animation:shine 1.2s infinite;border-radius:16px;height:18px}@keyframes shine{to{background-position:-200% 0}}.steps{display:flex;gap:8px;margin-bottom:18px}.step{flex:1;padding:10px;border-radius:12px;background:#fff;border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--muted)}.step.on{color:var(--blue);border-color:#bfdbfe;background:var(--blue-soft)}.landing{max-width:1120px;margin:0 auto;padding:28px 24px 80px}.landing-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:48px}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:28px;align-items:center}.hero h1{font-size:48px;line-height:1.08;margin:10px 0 16px}.hero-card,.landing-grid article{background:var(--card);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:24px}.hero-chip{color:var(--blue);font-weight:800;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.landing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:48px}.landing-grid p{color:var(--muted);margin:8px 0 0}@media(max-width:980px){.hero,.landing-grid{grid-template-columns:1fr}.hero h1{font-size:34px}}@media(max-width:980px){.shell,.split,.stats{grid-template-columns:1fr}.sidebar{display:none}.main{padding:20px}}
