:root{--space-1:3.4px;--space-2:6.8px;--space-3:10.2px;--space-4:13.6px;--space-6:20.4px;--space-8:27.2px}*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--font-body)}#app{--color-bg:#101215;--color-surface:#181c20;--color-text:#e8eaec;--color-divider:#e8eaec26;--color-accent:#94bce3;--color-accent-soft:#94bce324;--color-accent-strong:#b7d3ec;--color-accent-active:#cfe1f2;--color-positive:#7bd8a4;--card-bg:var(--color-surface);--card-radius:14px;--card-shadow:0 6px 20px #0000002e;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--font-heading:"Nunito", system-ui, sans-serif;--font-heading-weight:800;--font-body:"Nunito Sans", system-ui, sans-serif;background:var(--color-bg);min-height:100dvh;color:var(--color-text);font-family:var(--font-body);font-size:15px;line-height:1.55}#app[data-theme=light]{--color-bg:#f2f2f3;--color-surface:#fff;--color-text:#1d1f20;--color-divider:#1d1f2029;--color-accent:#5980a6;--color-accent-soft:#5980a61a;--color-accent-strong:#416180;--color-accent-active:#2c455d;--color-positive:#2f9c5f}#app h1,#app h2,#app h3,#app h4,#app h5,#app h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);letter-spacing:0;text-wrap:balance;margin:0}#app :focus{outline:none}#app :focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}#app img{max-width:100%;display:block}#app .btn{cursor:pointer;font-family:var(--font-heading);color:var(--color-text);padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--card-radius);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}#app .btn svg{display:block}#app .btn-secondary{border-color:var(--color-divider)}#app .btn-secondary:hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}#app .btn-secondary:active{background:color-mix(in srgb, var(--color-text) 14%, transparent)}#app .btn-ghost{color:var(--color-accent);padding-inline:var(--space-1)}#app .btn-ghost:hover{background:color-mix(in srgb, var(--color-accent) 10%, transparent)}#app .btn-ghost:active{background:color-mix(in srgb, var(--color-accent) 18%, transparent)}#app .btn-icon{width:36px;height:36px;padding:0}#app .input{width:100%;min-height:36px;font:inherit;color:var(--color-text);caret-color:var(--color-accent);border:1px solid var(--color-divider);border-radius:var(--card-radius);background:0 0;padding:6px 10px;font-size:14px}#app .input:hover{border-color:color-mix(in srgb, var(--color-text) 45%, transparent)}#app .input:focus-visible{border-color:var(--color-accent);outline-offset:0}#app ::placeholder{color:color-mix(in srgb, var(--color-text) 45%, transparent)}#app .search-box{transition:border-color .15s}#app .search-box:focus-within{border-color:var(--color-accent)}#app .blueprint{border:1px solid var(--color-divider);position:relative}.reveal{opacity:0;will-change:opacity, transform;transition:opacity .55s,transform .55s;transform:translateY(16px)}.reveal.is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}#app .card-tile:hover{transform:translateY(-2px);border-color:var(--color-accent)!important}#app .set-tile:hover{border-color:var(--color-accent)!important}#app .expansion-row:hover{background:var(--color-accent-soft)!important}
