:root{--surface: #ffffff;--page: #f6f8fc;--container: #eff3fa;--container-high: #e6ebf4;--line: #e4e9f1;--outline: #a5abb5;--outline-soft: #dce3ee;--ink: #131c28;--ink-2: #3c4654;--ink-3: #5a6472;--ink-4: #8a919c;--primary: #0b57d0;--on-primary-container: #00317e;--primary-container: #d8e6ff;--primary-tint: #eef4ff;--ok: #17703c;--ok-container: #eaf6ee;--on-ok: #0c4a24;--warn: #b06000;--warn-container: #fff4e0;--on-warn: #7a4700;--err: #b3261e;--err-container: #ffdad6;--on-err: #8c1d18;--e1: 0 1px 2px rgba(19, 28, 40, .1), 0 1px 3px 1px rgba(19, 28, 40, .05);--e2: 0 1px 2px rgba(19, 28, 40, .12), 0 2px 8px 2px rgba(19, 28, 40, .08)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--page);color:var(--ink);font-family:DM Sans,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{color:var(--on-primary-container);text-decoration:underline}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;padding:0;text-align:left}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--outline);border-radius:10px;padding:12px 14px;width:100%}input:focus,textarea:focus,select:focus{outline:none;border:2px solid var(--primary);padding:11px 13px}textarea{resize:vertical;line-height:1.6}.mono{font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.hov:hover{background:var(--container)}.row{display:flex;align-items:center;gap:12px}.col{display:flex;flex-direction:column}.grow{flex-grow:1;min-width:0}.muted{color:var(--ink-3)}.small{font-size:13px}.tiny{font-size:12px}.overline{font-size:11px;font-weight:500;letter-spacing:.9px;text-transform:uppercase;color:var(--ink-3)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pre{white-space:pre-line}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--e1)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d8dee9;border-radius:8px}::-webkit-scrollbar-track{background:transparent}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--outline-soft);border-top-color:var(--primary);animation:spin .7s linear infinite}@keyframes mFade{0%,6%{opacity:0}34%,to{opacity:1}}@keyframes mRise{0%,6%{opacity:0;transform:translateY(22px)}38%,to{opacity:1;transform:translateY(0)}}@keyframes mDrop{0%,6%{opacity:0;transform:translateY(-22px)}38%,to{opacity:1;transform:translateY(0)}}@keyframes mSlide{0%,6%{opacity:0;transform:translate(-46px)}38%,to{opacity:1;transform:translate(0)}}@keyframes mScale{0%,6%{opacity:0;transform:scale(.55)}38%,to{opacity:1;transform:scale(1)}}@keyframes mPop{0%,6%{opacity:0;transform:scale(.25) translateY(9px)}42%,to{opacity:1;transform:scale(1) translateY(0)}}@keyframes mWipe{0%,6%{clip-path:inset(0 0 105% 0)}42%,to{clip-path:inset(0 0 -6% 0)}}@keyframes mBlur{0%,6%{opacity:0;filter:blur(9px)}44%,to{opacity:1;filter:blur(0)}}@keyframes mTrack{0%,6%{opacity:0;letter-spacing:.42em}42%,to{opacity:1;letter-spacing:.02em}}@keyframes mType{0%,6%{clip-path:inset(0 100% 0 0)}14%{clip-path:inset(0 78% 0 0)}22%{clip-path:inset(0 56% 0 0)}30%{clip-path:inset(0 34% 0 0)}38%{clip-path:inset(0 14% 0 0)}45%,to{clip-path:inset(0 -2% 0 0)}}@keyframes mWords{0%,6%{clip-path:inset(0 100% 0 0)}30%{clip-path:inset(0 46% 0 0)}55%,to{clip-path:inset(0 -2% 0 0)}}@keyframes mFlip{0%,6%{opacity:0;transform:perspective(320px) rotateX(-84deg)}42%,to{opacity:1;transform:perspective(320px) rotateX(0)}}@keyframes mOutFade{0%,62%{opacity:1}94%,to{opacity:0}}@keyframes mOutSink{0%,62%{opacity:1;transform:translateY(0)}94%,to{opacity:0;transform:translateY(18px)}}@keyframes mOutLift{0%,62%{opacity:1;transform:translateY(0)}94%,to{opacity:0;transform:translateY(-18px)}}@keyframes mOutScale{0%,62%{opacity:1;transform:scale(1)}94%,to{opacity:0;transform:scale(.78)}}@keyframes mOutBlur{0%,62%{opacity:1;filter:blur(0)}94%,to{opacity:0;filter:blur(9px)}}@keyframes mOutCut{0%,90%{opacity:1}91%,to{opacity:0}}@keyframes mFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes mPulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes mKen{0%{transform:scale(1)}to{transform:scale(1.16)}}@keyframes mWobble{0%,to{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}@keyframes mShimmer{0%{background-position:-140% 0}to{background-position:240% 0}}
