:root{--ink: #0c1730;--navy: #14306b;--navy2: #1d3f86;--blue: #2f6df0;--blueSoft: #e7eefb;--bg: #eef1f8;--surf: #ffffff;--line: #dde3f0;--line2: #eaeef6;--mut: #5d6b86;--mut2: #8a96ac;--ok: #137a52;--okBg: #e0f1ea;--warn: #9a6b16;--warnBg: #fbf0d8;--danger: #b3402f;--head: "Libre Franklin", sans-serif;--body: "IBM Plex Sans", sans-serif;--mono: "IBM Plex Mono", monospace;--r: 10px;--shadow: 0 1px 2px rgba(12, 23, 48, .05), 0 8px 24px -16px rgba(12, 23, 48, .18);--shadowLg: 0 30px 60px -24px rgba(20, 48, 107, .45)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased}#root{height:100%}::selection{background:var(--blueSoft)}h1,h2,h3,h4{font-family:var(--head);margin:0;letter-spacing:-.02em}button{font-family:inherit}.mono{font-family:var(--mono)}.scene{height:100%;overflow-y:auto;overflow-x:hidden}.scene::-webkit-scrollbar{width:11px}.scene::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px;border:3px solid var(--bg)}.enter{animation:enter .34s cubic-bezier(.2,.7,.3,1)}@keyframes enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.stagger>*{opacity:0;animation:enter .5s cubic-bezier(.2,.7,.3,1) forwards}.stagger>*:nth-child(1){animation-delay:.04s}.stagger>*:nth-child(2){animation-delay:.1s}.stagger>*:nth-child(3){animation-delay:.16s}.stagger>*:nth-child(4){animation-delay:.22s}.stagger>*:nth-child(5){animation-delay:.28s}.stagger>*:nth-child(6){animation-delay:.34s}.btn{font-family:var(--head);font-weight:600;font-size:14px;padding:11px 20px;border-radius:var(--r);border:1.5px solid transparent;display:inline-flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap;transition:transform .12s,box-shadow .15s,background .15s,border-color .15s,opacity .15s;background:none}.btn:active{transform:translateY(1px)}.btn-pri{background:var(--navy);color:#fff}.btn-pri:hover{background:#0f2557;box-shadow:0 8px 20px -10px #14306b99}.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:#2560da}.btn-gho{background:var(--surf);color:var(--navy);border-color:var(--line)}.btn-gho:hover{border-color:var(--navy);background:#fff}.btn-ghost{background:transparent;color:var(--navy)}.btn-ghost:hover{background:var(--blueSoft)}.btn-sm{padding:8px 14px;font-size:13px;border-radius:8px}.btn-lg{padding:14px 26px;font-size:15px}.btn-block{width:100%;justify-content:center}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--blueSoft)}.pill{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:6px}.pill-blue{background:var(--blueSoft);color:var(--navy)}.pill-ok{background:var(--okBg);color:var(--ok)}.pill-warn{background:var(--warnBg);color:var(--warn)}.pill-gray{background:var(--line2);color:var(--mut)}.card{background:var(--surf);border:1px solid var(--line);border-radius:14px}.card-h{transition:transform .15s,box-shadow .18s,border-color .15s;cursor:pointer}.card-h:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#c7d3ec}.field label{display:block;font-size:12px;font-weight:600;color:var(--mut);margin-bottom:6px}.input{width:100%;border:1.5px solid var(--line);border-radius:9px;padding:10px 12px;font-family:var(--body);font-size:14px;color:var(--ink);background:#fff;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--mut2)}.input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blueSoft)}.checkbox{width:20px;height:20px;border-radius:6px;border:1.6px solid var(--line);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:.15s;background:#fff}.checkbox.on{background:var(--blue);border-color:var(--blue)}.radio{width:20px;height:20px;border-radius:50%;border:1.6px solid var(--line);flex:none;position:relative;cursor:pointer;transition:.15s;background:#fff}.radio.on{border-color:var(--blue);border-width:6px}.toggle{width:38px;height:22px;border-radius:999px;border:1.5px solid var(--line);background:var(--line2);position:relative;cursor:pointer;transition:.18s;flex:none}.toggle.on{background:var(--blue);border-color:var(--blue)}.toggle i{position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#fff;transition:.18s;box-shadow:0 1px 2px #0003}.toggle.on i{left:18px}.row{display:flex}.col{display:flex;flex-direction:column}.selectable{cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.selectable:hover{border-color:#bccbe8}.selectable.on{border-color:var(--blue);background:var(--blueSoft);box-shadow:0 0 0 1px var(--blue) inset}.progress{height:8px;background:var(--bg);border-radius:5px;overflow:hidden}.progress i{display:block;height:100%;border-radius:5px;background:var(--blue);transition:width .5s cubic-bezier(.2,.7,.3,1)}.navlink{font-size:14px;color:var(--mut);font-weight:500;cursor:pointer;transition:color .15s}.navlink:hover,.navlink.on{color:var(--ink)}.navlink:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:3px}.sideitem{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:48px;height:48px;border-radius:12px;cursor:pointer;transition:background .15s}.sideitem:hover{background:#ffffff1a}.sideitem.on{background:#ffffff29}.filerow{transition:background .12s;cursor:pointer}.filerow:hover{background:var(--bg)}.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:13px 20px;border-radius:11px;font-size:13.5px;font-weight:500;box-shadow:var(--shadowLg);z-index:100;display:flex;align-items:center;gap:10px;animation:toastIn .3s cubic-bezier(.2,.7,.3,1)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c173073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:90;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .2s}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:var(--surf);border-radius:16px;box-shadow:var(--shadowLg);animation:pop .26s cubic-bezier(.2,.8,.3,1)}@keyframes pop{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}.skl{background:var(--line2);border-radius:4px;animation:skl 1.2s ease-in-out infinite}@keyframes skl{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}.stepdot{width:26px;height:26px;border-radius:50%;border:1.8px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--head);font-weight:700;font-size:13px;background:#fff;color:var(--mut);flex:none;transition:.2s}.stepdot.on{background:var(--blue);color:#fff;border-color:var(--blue)}.stepdot.done{background:var(--okBg);color:var(--ok);border-color:#9bd3ba}.check-anim{stroke-dasharray:24;stroke-dashoffset:24;animation:draw .5s .15s forwards cubic-bezier(.6,.2,.3,1)}@keyframes draw{to{stroke-dashoffset:0}}.pop-in{animation:popIn .45s cubic-bezier(.2,.9,.3,1)}@keyframes popIn{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.stagger>*,.enter{opacity:1!important;transform:none!important}.check-anim{stroke-dashoffset:0!important}}
